Browse Source

Refactoring theme for django-jinja and django api compliance. #154 and #147

Ralfp 12 years ago
parent
commit
79af1a4169
5 changed files with 46 additions and 9 deletions
  1. 0 0
      misago/_theme.py
  2. 5 4
      misago/middleware/theme.py
  3. 5 5
      misago/models/forummodel.py
  4. 1 0
      misago/shortcuts.py
  5. 35 0
      misago/template.py

+ 0 - 0
misago/theme.py → misago/_theme.py


+ 5 - 4
misago/middleware/theme.py

@@ -1,21 +1,22 @@
 from urlparse import urlparse
 from django.conf import settings
 from django.core.cache import cache
-from misago.theme import Theme
+from misago.template import activate_theme
 
 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])
+
+        activate_theme(settings.INSTALLED_THEMES[0])
 
         if settings.MOBILE_SUBDOMAIN and settings.MOBILE_TEMPLATES:
             if settings.MOBILE_SUBDOMAIN == '*':
-                request.theme = Theme(settings.MOBILE_TEMPLATES)
+                activate_theme(settings.MOBILE_TEMPLATES)
             else:
                 mobile_domain = '%s.%s/' % (settings.MOBILE_SUBDOMAIN, urlparse(settings.BOARD_ADDRESS).netloc)
                 current_domain = '%s.%s/' % (settings.MOBILE_SUBDOMAIN, urlparse(request.META.get('HTTP_HOST')).netloc)
                 
                 if current_domain == mobile_domain:
-                    request.theme = Theme(settings.MOBILE_TEMPLATES)
+                    activate_theme(settings.MOBILE_TEMPLATES)
                     

+ 5 - 5
misago/models/forummodel.py

@@ -9,20 +9,20 @@ from django.db import models
 from django.utils.translation import ugettext_lazy as _
 from misago.signals import delete_forum_content, move_forum_content, rename_forum, rename_user
 
-thread_local = threading.local()
+_thread_local = threading.local()
 
 class ForumManager(TreeManager):
     @property
     def forums_tree(self):
         try:
-            return thread_local.misago_forums_tree
+            return _thread_local.misago_forums_tree
         except AttributeError:
-            thread_local.misago_forums_tree = None
-        return thread_local.misago_forums_tree
+            _thread_local.misago_forums_tree = None
+        return _thread_local.misago_forums_tree
 
     @forums_tree.setter
     def forums_tree(self, value):
-        thread_local.misago_forums_tree = value
+        _thread_local.misago_forums_tree = value
 
     def special_pk(self, name):
         self.populate_tree()

+ 1 - 0
misago/shortcuts.py

@@ -0,0 +1 @@
+from django.shortcuts import redirect

+ 35 - 0
misago/template.py

@@ -0,0 +1,35 @@
+import threading
+from django.conf import settings
+from django.shortcuts import (render as django_render,
+                              render_to_response as django_render_to_response)
+from django.template import RequestContext
+from django.template.loader import render_to_string as django_render_to_string
+from django.utils.importlib import import_module
+
+_thread_local = threading.local()
+
+def activate_theme(theme):
+    if theme not in settings.INSTALLED_THEMES:
+        raise ValueError('"%s" is not correct theme name.' % theme)
+    if theme[0] == '_':
+        raise ValueError('"%s" is a template package, not a theme.' % theme[1:])
+    _thread_local.misago_theme = theme;
+
+
+def theme_name():
+    try:
+        return _thread_local.misago_theme
+    except AttributeError:
+        return None
+
+
+def render(*args, **kwargs):
+    return django_render(*args, **kwargs)
+
+
+def render_to_string(*args, **kwargs):
+    return django_render_to_string(*args, **kwargs)
+
+
+def render_to_response(*args, **kwargs):
+    return django_render_to_response(*args, **kwargs)