Browse Source

Set guards on forms to make sure names entered are sluggable and fit database.

Ralfp 12 years ago
parent
commit
48eb37bbb0

+ 5 - 1
misago/forumroles/forms.py

@@ -1,9 +1,13 @@
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from django import forms
 from django import forms
 from misago.forms import Form
 from misago.forms import Form
+from misago.utils.validators import validate_sluggable
 
 
 class ForumRoleForm(Form):
 class ForumRoleForm(Form):
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Role name must be sluggable."),
+                                                                         _("Role name is too long.")
+                                                                         )])
     
     
     def finalize_form(self):
     def finalize_form(self):
         self.layout = (
         self.layout = (

+ 13 - 3
misago/forums/forms.py

@@ -3,11 +3,15 @@ from django import forms
 from mptt.forms import TreeNodeChoiceField
 from mptt.forms import TreeNodeChoiceField
 from misago.forms import Form, YesNoSwitch
 from misago.forms import Form, YesNoSwitch
 from misago.forums.models import Forum
 from misago.forums.models import Forum
+from misago.utils.validators import validate_sluggable
 
 
 class CategoryForm(Form):
 class CategoryForm(Form):
     parent = False
     parent = False
     perms = False
     perms = False
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Category name must be sluggable."),
+                                                                         _("Category name is too long.")
+                                                                         )])
     description = forms.CharField(widget=forms.Textarea,required=False)
     description = forms.CharField(widget=forms.Textarea,required=False)
     closed = forms.BooleanField(widget=YesNoSwitch,required=False)
     closed = forms.BooleanField(widget=YesNoSwitch,required=False)
     style = forms.CharField(max_length=255,required=False)
     style = forms.CharField(max_length=255,required=False)
@@ -45,7 +49,10 @@ class CategoryForm(Form):
 class ForumForm(Form):
 class ForumForm(Form):
     parent = False
     parent = False
     perms = False
     perms = False
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Forum name must be sluggable."),
+                                                                         _("Forum name is too long.")
+                                                                         )])
     description = forms.CharField(widget=forms.Textarea,required=False)
     description = forms.CharField(widget=forms.Textarea,required=False)
     closed = forms.BooleanField(widget=YesNoSwitch,required=False)
     closed = forms.BooleanField(widget=YesNoSwitch,required=False)
     style = forms.CharField(max_length=255,required=False)
     style = forms.CharField(max_length=255,required=False)
@@ -92,7 +99,10 @@ class ForumForm(Form):
 class RedirectForm(Form):
 class RedirectForm(Form):
     parent = False
     parent = False
     perms = False
     perms = False
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Redirect name must be sluggable."),
+                                                                         _("Redirect name is too long.")
+                                                                         )])
     description = forms.CharField(widget=forms.Textarea,required=False)
     description = forms.CharField(widget=forms.Textarea,required=False)
     redirect = forms.URLField(max_length=255)
     redirect = forms.URLField(max_length=255)
     style = forms.CharField(max_length=255,required=False)
     style = forms.CharField(max_length=255,required=False)

+ 5 - 1
misago/newsletters/forms.py

@@ -3,9 +3,13 @@ from django.utils.translation import ugettext_lazy as _
 from django import forms
 from django import forms
 from misago.forms import Form, YesNoSwitch
 from misago.forms import Form, YesNoSwitch
 from misago.ranks.models import Rank
 from misago.ranks.models import Rank
+from misago.utils.validators import validate_sluggable
 
 
 class NewsletterForm(Form):
 class NewsletterForm(Form):
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Newsletter name must be sluggable."),
+                                                                         _("Newsletter name is too long.")
+                                                                         )])
     step_size = forms.IntegerField(initial=300,min_value=1)
     step_size = forms.IntegerField(initial=300,min_value=1)
     content_html = forms.CharField(widget=forms.Textarea)
     content_html = forms.CharField(widget=forms.Textarea)
     content_plain = forms.CharField(widget=forms.Textarea)
     content_plain = forms.CharField(widget=forms.Textarea)

+ 5 - 1
misago/prune/forms.py

@@ -1,9 +1,13 @@
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from django import forms
 from django import forms
 from misago.forms import Form
 from misago.forms import Form
+from misago.utils.validators import validate_sluggable
 
 
 class PolicyForm(Form):
 class PolicyForm(Form):
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Policy name must be sluggable."),
+                                                                         _("Policy name is too long.")
+                                                                         )])
     email = forms.CharField(max_length=255,required=False)
     email = forms.CharField(max_length=255,required=False)
     posts = forms.IntegerField(min_value=0,initial=0)
     posts = forms.IntegerField(min_value=0,initial=0)
     registered = forms.IntegerField(min_value=0,initial=0)
     registered = forms.IntegerField(min_value=0,initial=0)

+ 5 - 1
misago/ranks/forms.py

@@ -2,9 +2,13 @@ from django.core.validators import RegexValidator
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from django import forms
 from django import forms
 from misago.forms import Form, YesNoSwitch
 from misago.forms import Form, YesNoSwitch
+from misago.utils.validators import validate_sluggable
 
 
 class RankForm(Form):
 class RankForm(Form):
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Rank name must be sluggable."),
+                                                                         _("Rank name is too long.")
+                                                                         )])
     description = forms.CharField(widget=forms.Textarea,required=False)
     description = forms.CharField(widget=forms.Textarea,required=False)
     title = forms.CharField(max_length=255,required=False)
     title = forms.CharField(max_length=255,required=False)
     style = forms.CharField(max_length=255,required=False)
     style = forms.CharField(max_length=255,required=False)

+ 5 - 1
misago/roles/forms.py

@@ -1,9 +1,13 @@
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from django import forms
 from django import forms
 from misago.forms import Form, YesNoSwitch
 from misago.forms import Form, YesNoSwitch
+from misago.utils.validators import validate_sluggable
 
 
 class RoleForm(Form):
 class RoleForm(Form):
-    name = forms.CharField(max_length=255)
+    name = forms.CharField(max_length=255,validators=[validate_sluggable(
+                                                                         _("Role name must be sluggable."),
+                                                                         _("Role name is too long.")
+                                                                         )])
     protected = forms.BooleanField(widget=YesNoSwitch,required=False)
     protected = forms.BooleanField(widget=YesNoSwitch,required=False)
     
     
     def finalize_form(self):
     def finalize_form(self):