dynamicweb/cms/middleware/page.py

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)