Added per-request cache to get_admin_interface_theme template tag #19
parent
2d8eeee425
commit
e19cd51803
|
|
@ -11,5 +11,17 @@ register = template.Library()
|
|||
@register.assignment_tag(takes_context = True)
|
||||
def get_admin_interface_theme(context):
|
||||
|
||||
return Theme.get_active_theme()
|
||||
theme = None
|
||||
request = context.get('request', None)
|
||||
|
||||
if request:
|
||||
theme = getattr(request, 'admin_interface_theme', None)
|
||||
|
||||
if not theme:
|
||||
theme = Theme.get_active_theme()
|
||||
|
||||
if request:
|
||||
request.admin_interface_theme = theme
|
||||
|
||||
return theme
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
from django.conf import settings
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
from django.template import Context, Template
|
||||
|
||||
import random
|
||||
|
|
@ -13,16 +14,14 @@ from admin_interface.models import Theme
|
|||
class AdminInterfaceTestCase(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.request_factory = RequestFactory()
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(settings.MEDIA_ROOT, ignore_errors=True)
|
||||
pass
|
||||
|
||||
def __render_template(self, string, context=None):
|
||||
|
||||
context = context or {}
|
||||
context = Context(context)
|
||||
def __render_template(self, string, context):
|
||||
return Template(string).render(context)
|
||||
|
||||
def __test_active_theme(self):
|
||||
|
|
@ -104,7 +103,17 @@ class AdminInterfaceTestCase(TestCase):
|
|||
def test_templatetags(self):
|
||||
|
||||
Theme.objects.all().delete()
|
||||
rendered = self.__render_template('{% load admin_interface_tags %}{% get_admin_interface_theme as theme %}{{ theme.name }}')
|
||||
context = Context({})
|
||||
rendered = self.__render_template('{% load admin_interface_tags %}{% get_admin_interface_theme as theme %}{{ theme.name }}', context)
|
||||
self.assertEqual(rendered, 'Django')
|
||||
|
||||
def test_templatetags_with_request(self):
|
||||
|
||||
Theme.objects.all().delete()
|
||||
context = Context({
|
||||
'request': self.request_factory.get('/')
|
||||
})
|
||||
rendered = self.__render_template('{% load admin_interface_tags %}{% get_admin_interface_theme as theme %}{{ theme.name }}', context)
|
||||
self.assertEqual(rendered, 'Django')
|
||||
|
||||
def test_repr(self):
|
||||
|
|
|
|||
Loading…
Reference in New Issue