diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst index 88779a5cec..24f585d981 100644 --- a/CONTRIBUTORS.rst +++ b/CONTRIBUTORS.rst @@ -269,6 +269,7 @@ Contributors * Bruno Alla * Christopher Bledsoe (The Motley Fool) * Florent Osmont +* J Rob Gant Translators =========== diff --git a/wagtail/core/templatetags/wagtailcore_tags.py b/wagtail/core/templatetags/wagtailcore_tags.py index 2fae945d2d..a66634b964 100644 --- a/wagtail/core/templatetags/wagtailcore_tags.py +++ b/wagtail/core/templatetags/wagtailcore_tags.py @@ -37,16 +37,6 @@ def slugurl(context, slug): if page: # call pageurl() instead of page.relative_url() here so we get the ``accepts_kwarg`` logic return pageurl(context, page) - else: - return None - - try: - current_site = context['request'].site - except (KeyError, AttributeError): - # request.site not available in the current context; fall back on page.url - return page.url - - return page.relative_url(current_site) @register.simple_tag diff --git a/wagtail/core/tests/test_jinja2.py b/wagtail/core/tests/test_jinja2.py index cdc0414cd4..40a46a62a1 100644 --- a/wagtail/core/tests/test_jinja2.py +++ b/wagtail/core/tests/test_jinja2.py @@ -45,6 +45,10 @@ class TestCoreGlobalsAndFilters(TestCase): self.render('{{ slugurl(page.slug) }}', {'page': page}), page.url) + def test_bad_slugurl(self): + self.assertEqual( + self.render('{{ slugurl("bad-slug-doesnt-exist") }}', {}), 'None') + def test_wagtail_version(self): self.assertEqual( self.render('{{ wagtail_version() }}'), diff --git a/wagtail/core/tests/tests.py b/wagtail/core/tests/tests.py index 45573f35a0..a730deb21d 100644 --- a/wagtail/core/tests/tests.py +++ b/wagtail/core/tests/tests.py @@ -48,6 +48,17 @@ class TestPageUrlTags(TestCase): result = tpl.render(template.Context({'request': HttpRequest()})) self.assertIn('Events', result) + def test_bad_slugurl(self): + tpl = template.Template('''{% load wagtailcore_tags %}Events''') + + # no 'request' object in context + result = tpl.render(template.Context({})) + self.assertIn('Events', result) + + # 'request' object in context, but no 'site' attribute + result = tpl.render(template.Context({'request': HttpRequest()})) + self.assertIn('Events', result) + class TestSiteRootPathsCache(TestCase): fixtures = ['test.json']