From 77340cfe9580ec8510f4af9333cf1aba2d09e70b Mon Sep 17 00:00:00 2001 From: Dan Braghis Date: Thu, 12 Feb 2015 22:22:22 +0000 Subject: [PATCH 1/2] Add tests for the password reset emails --- .../wagtailadmin/tests/test_password_reset.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 wagtail/wagtailadmin/tests/test_password_reset.py diff --git a/wagtail/wagtailadmin/tests/test_password_reset.py b/wagtail/wagtailadmin/tests/test_password_reset.py new file mode 100644 index 0000000000..e0a1dd1b4a --- /dev/null +++ b/wagtail/wagtailadmin/tests/test_password_reset.py @@ -0,0 +1,33 @@ +from django.test import TestCase, override_settings +from django.core import mail + +from wagtail.tests.utils import WagtailTestUtils +from wagtail.wagtailcore.models import Site + + +class TestUserPasswordReset(TestCase, WagtailTestUtils): + fixtures = ['test.json'] + + # need to clear urlresolver caches before/after tests, because we override ROOT_URLCONF + # in some tests here + def setUp(self): + from django.core.urlresolvers import clear_url_caches + clear_url_caches() + + def tearDown(self): + from django.core.urlresolvers import clear_url_caches + clear_url_caches() + + @override_settings(ROOT_URLCONF="wagtail.wagtailadmin.urls") + def test_email_found_default_url(self): + response = self.client.post('/password_reset/', {'email': 'siteeditor@example.com'}) + self.assertEqual(response.status_code, 302) + self.assertEqual(len(mail.outbox), 1) + self.assertIn("testserver", mail.outbox[0].body) + + @override_settings(ROOT_URLCONF="wagtail.wagtailadmin.urls", BASE_URL='http://mysite.com') + def test_email_found_base_url(self): + response = self.client.post('/password_reset/', {'email': 'siteeditor@example.com'}) + self.assertEqual(response.status_code, 302) + self.assertEqual(len(mail.outbox), 1) + self.assertIn("mysite.com", mail.outbox[0].body) From 82cca64b2a9a25395b864ca2949050658952147e Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Mon, 16 Feb 2015 18:31:17 +0000 Subject: [PATCH 2/2] Use BASE_URL in password reset email if available - fixes #841 --- .../templates/wagtailadmin/account/password_reset/email.txt | 4 ++-- wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/account/password_reset/email.txt b/wagtail/wagtailadmin/templates/wagtailadmin/account/password_reset/email.txt index b9b64d35e0..892a4b93d9 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/account/password_reset/email.txt +++ b/wagtail/wagtailadmin/templates/wagtailadmin/account/password_reset/email.txt @@ -1,3 +1,3 @@ -{% load i18n %} +{% load i18n wagtailadmin_tags %}{% base_url_setting as base_url %} {% trans "Please follow the link below to reset your password" %} -{{ protocol }}://{{ domain }}{% url 'wagtailadmin_password_reset_confirm' uidb64=uid token=token %} \ No newline at end of file +{% if base_url %}{{ base_url }}{% else %}{{ protocol }}://{{ domain }}{% endif %}{% url 'wagtailadmin_password_reset_confirm' uidb64=uid token=token %} \ No newline at end of file diff --git a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py index cb049d0e88..3b9302fce4 100644 --- a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py +++ b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py @@ -134,6 +134,11 @@ def usage_count_enabled(): return getattr(settings, 'WAGTAIL_USAGE_COUNT_ENABLED', False) +@register.assignment_tag +def base_url_setting(): + return getattr(settings, 'BASE_URL', None) + + class EscapeScriptNode(template.Node): TAG_NAME = 'escapescript' SCRIPT_RE = re.compile(r'<(-*)/script>')