Files
Aarif 97d327feeb BOM-1121
Old style mixin compatibility with django2.2
2020-01-30 16:36:02 +05:00

41 lines
1.3 KiB
Python

"""
Middleware for theming app
Note:
This middleware depends on "django_sites_extensions" app
So it must be added to INSTALLED_APPS in django settings files.
"""
from django.conf import settings
from django.utils.deprecation import MiddlewareMixin
from .models import SiteTheme
from .views import get_user_preview_site_theme
class CurrentSiteThemeMiddleware(MiddlewareMixin):
"""
Middleware that sets `site_theme` attribute to request object.
"""
def process_request(self, request):
"""
Set the request's 'site_theme' attribute based upon the current user.
"""
# Specifying a "site_theme" querystring param takes precedence
qs_theme = request.GET.get('site_theme')
# Determine if the user has specified a preview site
preview_site_theme = get_user_preview_site_theme(request)
if qs_theme:
site_theme = SiteTheme(site=request.site, theme_dir_name=qs_theme)
elif preview_site_theme:
site_theme = preview_site_theme
else:
default_theme = None
if settings.DEFAULT_SITE_THEME:
default_theme = SiteTheme(site=request.site, theme_dir_name=settings.DEFAULT_SITE_THEME)
site_theme = SiteTheme.get_theme(request.site, default=default_theme)
request.site_theme = site_theme