From 7f82787aed12b74080ea7e6400665d2b081a6143 Mon Sep 17 00:00:00 2001 From: Nebulosar Date: Thu, 15 Mar 2018 17:15:56 +0100 Subject: [PATCH] Added error message for settings when site not defined (#4362) * Added error message for settings when site not defined * added tests * fixed linter error * implemented feedback --- wagtail/contrib/settings/tests/test_admin.py | 13 +++++++++++++ wagtail/contrib/settings/views.py | 3 +++ 2 files changed, 16 insertions(+) diff --git a/wagtail/contrib/settings/tests/test_admin.py b/wagtail/contrib/settings/tests/test_admin.py index 9f8313ca4..6bbc69a46 100644 --- a/wagtail/contrib/settings/tests/test_admin.py +++ b/wagtail/contrib/settings/tests/test_admin.py @@ -127,6 +127,19 @@ class TestSettingEditView(BaseTestSettingView): self.assertEqual(setting.title, 'Edited site title') self.assertEqual(setting.email, 'test@example.com') + def test_get_edit_current_site(self): + url = reverse('wagtailsettings:edit', args=('tests', 'testsetting')) + default_site = Site.objects.get(is_default_site=True) + + response = self.client.get(url) + self.assertRedirects(response, status_code=302, expected_url='%s%s/' % (url, default_site.pk)) + + def test_get_edit_current_site_invalid(self): + Site.objects.all().delete() + url = reverse('wagtailsettings:edit', args=('tests', 'testsetting')) + response = self.client.get(url) + self.assertRedirects(response, status_code=302, expected_url='/admin/') + @override_settings(ALLOWED_HOSTS=['testserver', 'example.com', 'noneoftheabove.example.com']) class TestMultiSite(BaseTestSettingView): diff --git a/wagtail/contrib/settings/views.py b/wagtail/contrib/settings/views.py index 15208efb2..4dcf48bf9 100644 --- a/wagtail/contrib/settings/views.py +++ b/wagtail/contrib/settings/views.py @@ -39,6 +39,9 @@ def edit_current_site(request, app_name, model_name): # Redirect the user to the edit page for the current site # (or the current request does not correspond to a site, the first site in the list) site = request.site or Site.objects.first() + if not site: + messages.error(request, _("This setting could not be opened because there is no site defined.")) + return redirect('wagtailadmin_home') return redirect('wagtailsettings:edit', app_name, model_name, site.pk)