forked from ungleich-public/dynamicweb
27 lines
985 B
Python
27 lines
985 B
Python
from django.utils.functional import SimpleLazyObject
|
|
|
|
|
|
def get_page(request):
|
|
from cms.appresolver import applications_page_check
|
|
from cms.utils.page import get_page_from_request
|
|
|
|
if not hasattr(request, '_current_page_cache'):
|
|
request._current_page_cache = get_page_from_request(request)
|
|
if not request._current_page_cache:
|
|
# if this is in a apphook
|
|
# find the page the apphook is attached to
|
|
request._current_page_cache = applications_page_check(request)
|
|
return request._current_page_cache
|
|
|
|
|
|
class CurrentPageMiddleware:
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
request.current_page = SimpleLazyObject(lambda: get_page(request))
|
|
return self.get_response(request)
|
|
|
|
async def __acall__(self, request):
|
|
request.current_page = SimpleLazyObject(lambda: get_page(request))
|
|
return await self.get_response(request)
|