feat: add events app + "multi-tenants" aka multi-events
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from .models import Event
|
||||
from .scoping import current_event
|
||||
|
||||
|
||||
class EventContextMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
try:
|
||||
return self.get_response(request)
|
||||
finally:
|
||||
# Not current_event.reset(token): under ASGI, process_view and this
|
||||
# finally block can run in different contextvars.Context copies
|
||||
# (sync_to_async(thread_sensitive=True) copies the context), and
|
||||
# Token.reset() requires the exact Context it was created in.
|
||||
# set(None) has no such constraint.
|
||||
current_event.set(None)
|
||||
|
||||
def process_view(self, request, view_func, view_args, view_kwargs):
|
||||
event_path = view_kwargs.get("event_path")
|
||||
if event_path:
|
||||
request.event = get_object_or_404(Event, path=event_path)
|
||||
current_event.set(request.event)
|
||||
return None
|
||||
Reference in New Issue
Block a user