Fix and test for cleaning a non-string value in a URLField

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16747 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Chris Beaven 2011-09-09 22:32:38 +00:00
parent 699688dc2c
commit fe88584589
2 changed files with 6 additions and 1 deletions

View File

@ -583,6 +583,7 @@ class URLField(CharField):
self.validators.append(validators.URLValidator(verify_exists=verify_exists, validator_user_agent=validator_user_agent)) self.validators.append(validators.URLValidator(verify_exists=verify_exists, validator_user_agent=validator_user_agent))
def to_python(self, value): def to_python(self, value):
value = super(URLField, self).to_python(value)
if value: if value:
url_fields = list(urlparse.urlsplit(value)) url_fields = list(urlparse.urlsplit(value))
if not url_fields[0]: if not url_fields[0]:
@ -601,7 +602,7 @@ class URLField(CharField):
# the path portion may need to be added before query params # the path portion may need to be added before query params
url_fields[2] = '/' url_fields[2] = '/'
value = urlparse.urlunsplit(url_fields) value = urlparse.urlunsplit(url_fields)
return super(URLField, self).to_python(value) return value
class BooleanField(Field): class BooleanField(Field):
widget = CheckboxInput widget = CheckboxInput

View File

@ -686,6 +686,10 @@ class FieldsTests(SimpleTestCase):
url = u'http://t\xfcr.djangoproject.com/' url = u'http://t\xfcr.djangoproject.com/'
self.assertEqual(url, f.clean(url)) self.assertEqual(url, f.clean(url))
def test_urlfield_not_string(self):
f = URLField(required=False)
self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 23)
# BooleanField ################################################################ # BooleanField ################################################################
def test_booleanfield_1(self): def test_booleanfield_1(self):