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)
|
@register.assignment_tag(takes_context = True)
|
||||||
def get_admin_interface_theme(context):
|
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.conf import settings
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.test.client import RequestFactory
|
||||||
from django.template import Context, Template
|
from django.template import Context, Template
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
@ -13,16 +14,14 @@ from admin_interface.models import Theme
|
||||||
class AdminInterfaceTestCase(TestCase):
|
class AdminInterfaceTestCase(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
self.request_factory = RequestFactory()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
shutil.rmtree(settings.MEDIA_ROOT, ignore_errors=True)
|
shutil.rmtree(settings.MEDIA_ROOT, ignore_errors=True)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def __render_template(self, string, context=None):
|
def __render_template(self, string, context):
|
||||||
|
|
||||||
context = context or {}
|
|
||||||
context = Context(context)
|
|
||||||
return Template(string).render(context)
|
return Template(string).render(context)
|
||||||
|
|
||||||
def __test_active_theme(self):
|
def __test_active_theme(self):
|
||||||
|
|
@ -104,7 +103,17 @@ class AdminInterfaceTestCase(TestCase):
|
||||||
def test_templatetags(self):
|
def test_templatetags(self):
|
||||||
|
|
||||||
Theme.objects.all().delete()
|
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')
|
self.assertEqual(rendered, 'Django')
|
||||||
|
|
||||||
def test_repr(self):
|
def test_repr(self):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue