From 52e38f20241ace8a8ee5fd3237a650798e098af7 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Mon, 18 Apr 2016 23:11:51 +0100 Subject: [PATCH] Make wagtailuserbar tag gracefully handle the absence of a 'request' variable (#2488) --- wagtail/wagtailadmin/templatetags/wagtailuserbar.py | 6 ++++-- wagtail/wagtailadmin/tests/test_userbar.py | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/wagtail/wagtailadmin/templatetags/wagtailuserbar.py b/wagtail/wagtailadmin/templatetags/wagtailuserbar.py index b5b76ddb6..4e54fd905 100644 --- a/wagtail/wagtailadmin/templatetags/wagtailuserbar.py +++ b/wagtail/wagtailadmin/templatetags/wagtailuserbar.py @@ -28,8 +28,10 @@ def get_page_instance(context): @register.simple_tag(takes_context=True) def wagtailuserbar(context, position='bottom-right'): # Find request object - request = context['request'] - + try: + request = context['request'] + except KeyError: + return '' # Don't render if user doesn't have permission to access the admin area if not request.user.has_perm('wagtailadmin.access_admin'): diff --git a/wagtail/wagtailadmin/tests/test_userbar.py b/wagtail/wagtailadmin/tests/test_userbar.py index bb18e8f9b..ae56cb029 100644 --- a/wagtail/wagtailadmin/tests/test_userbar.py +++ b/wagtail/wagtailadmin/tests/test_userbar.py @@ -34,6 +34,13 @@ class TestUserbarTag(TestCase): self.assertIn("", content) + def test_userbar_does_not_break_without_request(self): + template = Template("{% load wagtailuserbar %}{% wagtailuserbar %}boom") + content = template.render(Context({ + })) + + self.assertEqual("boom", content) + def test_userbar_tag_self(self): """ Ensure the userbar renders with `self` instead of `PAGE_TEMPLATE_VAR`