Fixed problems with middleware order

This commit is contained in:
Raphael Michel
2016-07-20 19:33:26 +02:00
parent f9cd4f02d3
commit 525705a912
3 changed files with 13 additions and 5 deletions

View File

@@ -6,6 +6,7 @@ from django.http import Http404
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from pretix.base.middleware import LocaleMiddleware
from pretix.base.models import Event, EventPermission, Organizer
from pretix.multidomain.urlreverse import get_domain
@@ -55,10 +56,14 @@ class EventMiddleware:
path = request.get_full_path().split("/", 2)[-1]
return redirect(urljoin('%s://%s' % (request.scheme, domain), path))
if hasattr(request, 'event') and not request.event.live:
if not request.user.is_authenticated() or not EventPermission.objects.filter(
event=request.event, user=request.user).exists():
raise PermissionDenied(_('The selected ticket shop is currently not available.'))
if hasattr(request, 'event'):
# Restrict locales to the ones available for this event
LocaleMiddleware().process_request(request)
if not request.event.live:
if not request.user.is_authenticated() or not EventPermission.objects.filter(
event=request.event, user=request.user).exists():
raise PermissionDenied(_('The selected ticket shop is currently not available.'))
except IndexError:
raise Http404(_('The selected event or organizer was not found.'))