File tree Expand file tree Collapse file tree 4 files changed +41
-2
lines changed Expand file tree Collapse file tree 4 files changed +41
-2
lines changed Original file line number Diff line number Diff line change 5
5
6
6
7
7
class FlatpageForm (forms .ModelForm ):
8
- url = forms .RegexField (label = _ ("URL" ), max_length = 100 , regex = r'^[-\w/]+$' ,
8
+ url = forms .RegexField (label = _ ("URL" ), max_length = 100 , regex = r'^[-\w/\.~ ]+$' ,
9
9
help_text = _ ("Example: '/about/contact/'. Make sure to have leading"
10
10
" and trailing slashes." ),
11
11
error_message = _ ("This value must contain only letters, numbers,"
12
- " underscores, dashes or slashes ." ))
12
+ " dots, underscores, dashes, slashes or tildes ." ))
13
13
14
14
class Meta :
15
15
model = FlatPage
Original file line number Diff line number Diff line change 1
1
from django .contrib .flatpages .tests .csrf import *
2
+ from django .contrib .flatpages .tests .forms import *
2
3
from django .contrib .flatpages .tests .middleware import *
3
4
from django .contrib .flatpages .tests .templatetags import *
4
5
from django .contrib .flatpages .tests .views import *
Original file line number Diff line number Diff line change
1
+ from django .contrib .flatpages .admin import FlatpageForm
2
+ from django .test import TestCase
3
+
4
+ class FlatpageAdminFormTests (TestCase ):
5
+ def setUp (self ):
6
+ self .form_data = {
7
+ 'title' : "A test page" ,
8
+ 'content' : "This is a test" ,
9
+ 'sites' : [1 ],
10
+ }
11
+
12
+ def test_flatpage_admin_form_url_validation (self ):
13
+ "The flatpage admin form validates correctly validates urls"
14
+ self .assertTrue (FlatpageForm (data = dict (url = '/new_flatpage/' , ** self .form_data )).is_valid ())
15
+ self .assertTrue (FlatpageForm (data = dict (url = '/some.special~chars/' , ** self .form_data )).is_valid ())
16
+ self .assertTrue (FlatpageForm (data = dict (url = '/some.very_special~chars-here/' , ** self .form_data )).is_valid ())
17
+
18
+ self .assertFalse (FlatpageForm (data = dict (url = '/a space/' , ** self .form_data )).is_valid ())
19
+ self .assertFalse (FlatpageForm (data = dict (url = '/a % char/' , ** self .form_data )).is_valid ())
20
+ self .assertFalse (FlatpageForm (data = dict (url = '/a ! char/' , ** self .form_data )).is_valid ())
21
+ self .assertFalse (FlatpageForm (data = dict (url = '/a & char/' , ** self .form_data )).is_valid ())
22
+ self .assertFalse (FlatpageForm (data = dict (url = '/a ? char/' , ** self .form_data )).is_valid ())
Original file line number Diff line number Diff line change 1
1
import os
2
2
from django .conf import settings
3
3
from django .contrib .auth .models import User
4
+ from django .contrib .flatpages .models import FlatPage
4
5
from django .test import TestCase
5
6
6
7
class FlatpageViewTests (TestCase ):
@@ -54,3 +55,18 @@ def test_fallback_non_existent_flatpage(self):
54
55
"A non-existent flatpage won't be served if the fallback middlware is disabled"
55
56
response = self .client .get ('/no_such_flatpage/' )
56
57
self .assertEquals (response .status_code , 404 )
58
+
59
+ def test_view_flatpage_special_chars (self ):
60
+ "A flatpage with special chars in the URL can be served through a view"
61
+ fp = FlatPage .objects .create (
62
+ url = "/some.very_special~chars-here/" ,
63
+ title = "A very special page" ,
64
+ content = "Isn't it special!" ,
65
+ enable_comments = False ,
66
+ registration_required = False ,
67
+ )
68
+ fp .sites .add (1 )
69
+
70
+ response = self .client .get ('/flatpage_root/some.very_special~chars-here/' )
71
+ self .assertEquals (response .status_code , 200 )
72
+ self .assertContains (response , "<p>Isn't it special!</p>" )
You can’t perform that action at this time.
0 commit comments