Redirect case-insensitive versions of event/organizer slugs

This commit is contained in:
Raphael Michel
2018-11-19 10:22:40 +01:00
parent 5c8d9c4dca
commit bbdbc94f6e

View File

@@ -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.'))