Author: russellm Date: 2010-08-28 07:25:54 -0500 (Sat, 28 Aug 2010) New Revision: 13655
Added: django/trunk/django/contrib/flatpages/tests/forms.py Modified: django/trunk/django/contrib/flatpages/admin.py django/trunk/django/contrib/flatpages/tests/__init__.py django/trunk/django/contrib/flatpages/tests/views.py Log: Fixed #5192 -- Modified flatpage admin form to allow ~ and . characters in flatpage names. Thanks to [email protected] for the report, Idan Gazit for summarizing the issue on the ticket, and ctrochalakis for the initial patch. Modified: django/trunk/django/contrib/flatpages/admin.py =================================================================== --- django/trunk/django/contrib/flatpages/admin.py 2010-08-28 11:59:14 UTC (rev 13654) +++ django/trunk/django/contrib/flatpages/admin.py 2010-08-28 12:25:54 UTC (rev 13655) @@ -5,11 +5,11 @@ class FlatpageForm(forms.ModelForm): - url = forms.RegexField(label=_("URL"), max_length=100, regex=r'^[-\w/]+$', + url = forms.RegexField(label=_("URL"), max_length=100, regex=r'^[-\w/\.~]+$', help_text = _("Example: '/about/contact/'. Make sure to have leading" " and trailing slashes."), error_message = _("This value must contain only letters, numbers," - " underscores, dashes or slashes.")) + " dots, underscores, dashes, slashes or tildes.")) class Meta: model = FlatPage Modified: django/trunk/django/contrib/flatpages/tests/__init__.py =================================================================== --- django/trunk/django/contrib/flatpages/tests/__init__.py 2010-08-28 11:59:14 UTC (rev 13654) +++ django/trunk/django/contrib/flatpages/tests/__init__.py 2010-08-28 12:25:54 UTC (rev 13655) @@ -1,4 +1,5 @@ from django.contrib.flatpages.tests.csrf import * +from django.contrib.flatpages.tests.forms import * from django.contrib.flatpages.tests.middleware import * from django.contrib.flatpages.tests.templatetags import * from django.contrib.flatpages.tests.views import * Added: django/trunk/django/contrib/flatpages/tests/forms.py =================================================================== --- django/trunk/django/contrib/flatpages/tests/forms.py (rev 0) +++ django/trunk/django/contrib/flatpages/tests/forms.py 2010-08-28 12:25:54 UTC (rev 13655) @@ -0,0 +1,22 @@ +from django.contrib.flatpages.admin import FlatpageForm +from django.test import TestCase + +class FlatpageAdminFormTests(TestCase): + def setUp(self): + self.form_data = { + 'title': "A test page", + 'content': "This is a test", + 'sites': [1], + } + + def test_flatpage_admin_form_url_validation(self): + "The flatpage admin form validates correctly validates urls" + self.assertTrue(FlatpageForm(data=dict(url='/new_flatpage/', **self.form_data)).is_valid()) + self.assertTrue(FlatpageForm(data=dict(url='/some.special~chars/', **self.form_data)).is_valid()) + self.assertTrue(FlatpageForm(data=dict(url='/some.very_special~chars-here/', **self.form_data)).is_valid()) + + self.assertFalse(FlatpageForm(data=dict(url='/a space/', **self.form_data)).is_valid()) + self.assertFalse(FlatpageForm(data=dict(url='/a % char/', **self.form_data)).is_valid()) + self.assertFalse(FlatpageForm(data=dict(url='/a ! char/', **self.form_data)).is_valid()) + self.assertFalse(FlatpageForm(data=dict(url='/a & char/', **self.form_data)).is_valid()) + self.assertFalse(FlatpageForm(data=dict(url='/a ? char/', **self.form_data)).is_valid()) Modified: django/trunk/django/contrib/flatpages/tests/views.py =================================================================== --- django/trunk/django/contrib/flatpages/tests/views.py 2010-08-28 11:59:14 UTC (rev 13654) +++ django/trunk/django/contrib/flatpages/tests/views.py 2010-08-28 12:25:54 UTC (rev 13655) @@ -1,6 +1,7 @@ import os from django.conf import settings from django.contrib.auth.models import User +from django.contrib.flatpages.models import FlatPage from django.test import TestCase class FlatpageViewTests(TestCase): @@ -54,3 +55,18 @@ "A non-existent flatpage won't be served if the fallback middlware is disabled" response = self.client.get('/no_such_flatpage/') self.assertEquals(response.status_code, 404) + + def test_view_flatpage_special_chars(self): + "A flatpage with special chars in the URL can be served through a view" + fp = FlatPage.objects.create( + url="/some.very_special~chars-here/", + title="A very special page", + content="Isn't it special!", + enable_comments=False, + registration_required=False, + ) + fp.sites.add(1) + + response = self.client.get('/flatpage_root/some.very_special~chars-here/') + self.assertEquals(response.status_code, 200) + self.assertContains(response, "<p>Isn't it special!</p>") -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.
