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']