Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Fix #20594: Add validation to models.SlugField. #1267

Closed
wants to merge 1 commit into from

2 participants

@bmispelon
Collaborator

No description provided.

@timgraham
Owner

Only nit is to follow the commit message guidelines ("Fixed #20594 -- ") and include "Thanks carbonXT for the report." -- merged in dc9c359, thanks!

@timgraham timgraham closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Jun 13, 2013
  1. @bmispelon
This page is out of date. Refresh to see the latest.
View
3  django/db/models/fields/__init__.py
@@ -1211,6 +1211,7 @@ def formfield(self, **kwargs):
return super(PositiveSmallIntegerField, self).formfield(**defaults)
class SlugField(CharField):
+ default_validators = [validators.validate_slug]
description = _("Slug (up to %(max_length)s)")
def __init__(self, *args, **kwargs):
@@ -1320,12 +1321,12 @@ def formfield(self, **kwargs):
return super(TimeField, self).formfield(**defaults)
class URLField(CharField):
+ default_validators = [validators.URLValidator()]
description = _("URL")
def __init__(self, verbose_name=None, name=None, **kwargs):
kwargs['max_length'] = kwargs.get('max_length', 200)
CharField.__init__(self, verbose_name, name, **kwargs)
- self.validators.append(validators.URLValidator())
def formfield(self, **kwargs):
# As with CharField, this will cause URL validation to be performed
View
5 django/forms/fields.py
@@ -638,10 +638,7 @@ class URLField(CharField):
default_error_messages = {
'invalid': _('Enter a valid URL.'),
}
-
- def __init__(self, max_length=None, min_length=None, *args, **kwargs):
- super(URLField, self).__init__(max_length, min_length, *args, **kwargs)
- self.validators.append(validators.URLValidator())
+ default_validators = [validators.URLValidator()]
def to_python(self, value):
View
1  tests/validation/models.py
@@ -19,6 +19,7 @@ class ModelToValidate(models.Model):
email = models.EmailField(blank=True)
url = models.URLField(blank=True)
f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe])
+ slug = models.SlugField(blank=True)
def clean(self):
super(ModelToValidate, self).clean()
View
6 tests/validation/tests.py
@@ -53,7 +53,11 @@ def test_wrong_url_value_raises_error(self):
def test_text_greater_that_charfields_max_length_raises_erros(self):
mtv = ModelToValidate(number=10, name='Some Name'*100)
- self.assertFailsValidation(mtv.full_clean, ['name',])
+ self.assertFailsValidation(mtv.full_clean, ['name'])
+
+ def test_malformed_slug_raises_error(self):
+ mtv = ModelToValidate(number=10, name='Some Name', slug='##invalid##')
+ self.assertFailsValidation(mtv.full_clean, ['slug'])
class ArticleForm(forms.ModelForm):
Something went wrong with that request. Please try again.