123456789101112131415161718192021222324 |
- from django.conf import settings
- from django.core.cache import cache
- from misago.themes.theme import Theme
- from misago.themes.models import ThemeAdjustment
- class ThemeMiddleware(object):
- def process_request(self, request):
- if not settings.INSTALLED_THEMES:
- raise ValueError('There are no themes installed!')
- request.theme = Theme(settings.INSTALLED_THEMES[0])
-
- # Adjust theme for specific client?
- if request.META.get('HTTP_USER_AGENT'):
- adjustments = cache.get('client_adjustments', 'nada')
- if adjustments == 'nada':
- adjustments = ThemeAdjustment.objects.all()
- cache.set('client_adjustments', adjustments)
- if adjustments:
- user_agent = request.META.get('HTTP_USER_AGENT').lower()
- for item in adjustments:
- if item.adjust_theme(user_agent):
- request.theme = Theme(item.theme)
- break
-
|