diff --git a/rosetta/templates/rosetta/admin_index.html b/rosetta/templates/rosetta/admin_index.html index 3939a86..4a767a4 100644 --- a/rosetta/templates/rosetta/admin_index.html +++ b/rosetta/templates/rosetta/admin_index.html @@ -1,8 +1,9 @@ {% extends "admin/index.html" %} -{% load i18n %} +{% load rosetta i18n %} {% block sidebar %} {{block.super}} +{% if request.user|can_translate %}
@@ -16,5 +17,5 @@
- +{% endif %} {% endblock %} diff --git a/rosetta/templatetags/rosetta.py b/rosetta/templatetags/rosetta.py index 3d34291..ba2aab3 100644 --- a/rosetta/templatetags/rosetta.py +++ b/rosetta/templatetags/rosetta.py @@ -4,10 +4,14 @@ from django.utils.html import escape import re import six +from rosetta.access import can_translate + register = template.Library() rx = re.compile(r'(%(\([^\s\)]*\))?[sd]|\{[\w\d_]+?\})') +can_translate = register.filter(can_translate) + def format_message(message): return mark_safe(rx.sub('\\1', escape(message).replace(r'\n', '
\n'))) diff --git a/rosetta/tests/tests.py b/rosetta/tests/tests.py index 3fd2189..31171b6 100644 --- a/rosetta/tests/tests.py +++ b/rosetta/tests/tests.py @@ -1033,6 +1033,14 @@ class RosettaTestCase(TestCase): self.assertTrue('foo language' in r.content.decode()) self.assertTrue('bar language' in r.content.decode()) + def test_198_embed_in_admin_access_control(self): + resp = self.client.get(reverse('admin:index')) + self.assertContains(resp, 'rosetta-content-main') + + with self.settings(ROSETTA_ACCESS_CONTROL_FUNCTION=lambda user: False): + resp = self.client.get(reverse('admin:index')) + self.assertNotContains(resp, 'rosetta-content-main') + # Stubbed access control function def no_access(user):