diff options
| author | Tom Carrick <knyght@knyg.ht> | 2018-09-09 12:35:44 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-09-11 12:15:22 -0400 |
| commit | a43cfc23d44abf6a3fe08e04117d67f7ab5d57bf (patch) | |
| tree | 1300a25e8a040db41d611b2ff9c3f46f14f3f128 | |
| parent | 5195b99e2c3804ec5f9c98d29e0cf76bf44b0cec (diff) | |
Fixed #29746 -- Fixed misleading FlatpageForm URL help text if APPEND_SLASH is disabled.
| -rw-r--r-- | django/contrib/flatpages/forms.py | 17 | ||||
| -rw-r--r-- | tests/flatpages_tests/test_forms.py | 10 |
2 files changed, 24 insertions, 3 deletions
diff --git a/django/contrib/flatpages/forms.py b/django/contrib/flatpages/forms.py index d807def77d..4d4b5c80e4 100644 --- a/django/contrib/flatpages/forms.py +++ b/django/contrib/flatpages/forms.py @@ -22,6 +22,19 @@ class FlatpageForm(forms.ModelForm): model = FlatPage fields = '__all__' + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if not self._trailing_slash_required(): + self.fields['url'].help_text = _( + "Example: '/about/contact'. Make sure to have a leading slash." + ) + + def _trailing_slash_required(self): + return ( + settings.APPEND_SLASH and + 'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE + ) + def clean_url(self): url = self.cleaned_data['url'] if not url.startswith('/'): @@ -29,9 +42,7 @@ class FlatpageForm(forms.ModelForm): gettext("URL is missing a leading slash."), code='missing_leading_slash', ) - if (settings.APPEND_SLASH and - 'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE and - not url.endswith('/')): + if self._trailing_slash_required() and not url.endswith('/'): raise forms.ValidationError( gettext("URL is missing a trailing slash."), code='missing_trailing_slash', diff --git a/tests/flatpages_tests/test_forms.py b/tests/flatpages_tests/test_forms.py index 2a4bb0679a..ce9bf449ce 100644 --- a/tests/flatpages_tests/test_forms.py +++ b/tests/flatpages_tests/test_forms.py @@ -49,6 +49,11 @@ class FlatpageAdminFormTests(TestCase): def test_flatpage_requires_trailing_slash_with_append_slash(self): form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data)) with translation.override('en'): + self.assertEqual( + form.fields['url'].help_text, + "Example: '/about/contact/'. Make sure to have leading and " + "trailing slashes." + ) self.assertFalse(form.is_valid()) self.assertEqual(form.errors['url'], ["URL is missing a trailing slash."]) @@ -56,6 +61,11 @@ class FlatpageAdminFormTests(TestCase): def test_flatpage_doesnt_requires_trailing_slash_without_append_slash(self): form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data)) self.assertTrue(form.is_valid()) + with translation.override('en'): + self.assertEqual( + form.fields['url'].help_text, + "Example: '/about/contact'. Make sure to have a leading slash." + ) def test_flatpage_admin_form_url_uniqueness_validation(self): "The flatpage admin form correctly enforces url uniqueness among flatpages of the same site" |
