From bbdbc94f6e7563f6cced708606e28a11610f0304 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 19 Nov 2018 10:22:40 +0100 Subject: [PATCH] Redirect case-insensitive versions of event/organizer slugs --- src/pretix/presale/utils.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/pretix/presale/utils.py b/src/pretix/presale/utils.py index bea37a1d3..c99e4dadc 100644 --- a/src/pretix/presale/utils.py +++ b/src/pretix/presale/utils.py @@ -97,6 +97,31 @@ def _detect_event(request, require_live=True, require_plugin=None): return response except Event.DoesNotExist: + if hasattr(request, 'organizer_domain'): + event = request.organizer.events.get( + slug__iexact=url.kwargs['event'], + organizer=request.organizer, + ) + pathparts = request.get_full_path().split('/') + pathparts[1] = event.slug + return redirect('/'.join(pathparts)) + else: + if 'event' in url.kwargs and 'organizer' in url.kwargs: + event = Event.objects.select_related('organizer').get( + slug__iexact=url.kwargs['event'], + organizer__slug__iexact=url.kwargs['organizer'] + ) + pathparts = request.get_full_path().split('/') + pathparts[1] = event.organizer.slug + pathparts[2] = event.slug + return redirect('/'.join(pathparts)) + elif 'organizer' in url.kwargs: + organizer = Organizer.objects.get( + slug__iexact=url.kwargs['organizer'] + ) + pathparts = request.get_full_path().split('/') + pathparts[1] = organizer.slug + return redirect('/'.join(pathparts)) raise Http404(_('The selected event was not found.')) except Organizer.DoesNotExist: raise Http404(_('The selected organizer was not found.'))