forked from CGM_Public/pretix_original
Integrate django-scopes (#1319)
* Install django-scopes * Fix tests.api * Update tasks and cronjobs * Fix remaining tests * Remove unused import * Fix tests after rebase * Disable scopes for get_Events_with_any_permission * Disable scopes for a management command
This commit is contained in:
@@ -1,25 +1,32 @@
|
||||
from django.urls import resolve
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django_scopes import scope
|
||||
|
||||
from pretix.presale.signals import process_response
|
||||
|
||||
from .utils import _detect_event
|
||||
|
||||
|
||||
class EventMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
class EventMiddleware:
|
||||
def __init__(self, get_response=None):
|
||||
self.get_response = get_response
|
||||
super().__init__()
|
||||
|
||||
def __call__(self, request):
|
||||
url = resolve(request.path_info)
|
||||
request._namespace = url.namespace
|
||||
if url.namespace != 'presale':
|
||||
return
|
||||
return self.get_response(request)
|
||||
|
||||
if 'organizer' in url.kwargs or 'event' in url.kwargs:
|
||||
redirect = _detect_event(request, require_live=url.url_name != 'event.widget.productlist')
|
||||
if redirect:
|
||||
return redirect
|
||||
|
||||
def process_response(self, request, response):
|
||||
if hasattr(request, '_namespace') and request._namespace == 'presale' and hasattr(request, 'event'):
|
||||
for receiver, r in process_response.send(request.event, request=request, response=response):
|
||||
response = r
|
||||
with scope(organizer=getattr(request, 'organizer', None)):
|
||||
response = self.get_response(request)
|
||||
|
||||
if hasattr(request, '_namespace') and request._namespace == 'presale' and hasattr(request, 'event'):
|
||||
for receiver, r in process_response.send(request.event, request=request, response=response):
|
||||
response = r
|
||||
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user