Added per-request cache to get_admin_interface_theme template tag #19

pull/21/head
Fabio Caccamo 2017-06-09 11:58:10 +02:00
parent 2d8eeee425
commit e19cd51803
2 changed files with 27 additions and 6 deletions

View File

@ -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

View File

@ -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):