summaryrefslogtreecommitdiff
path: root/django/newforms/fields.py
diff options
context:
space:
mode:
authorJoseph Kocherhans <joseph@jkocherhans.com>2006-11-30 22:39:19 +0000
committerJoseph Kocherhans <joseph@jkocherhans.com>2006-11-30 22:39:19 +0000
commit4542f21fc1b82dd0faa7be634640d2173339cb1e (patch)
tree1e0fb43c059c4c8657bb5c28fd60af051f194d92 /django/newforms/fields.py
parent3afdd8850485c9119b50a5a736d3aa16b7b912fe (diff)
generic-auth: Merged to trunk [4148].
git-svn-id: http://code.djangoproject.com/svn/django/branches/generic-auth@4149 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/newforms/fields.py')
-rw-r--r--django/newforms/fields.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index 40fc18bd3e..b3d44c24ae 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -76,6 +76,8 @@ class IntegerField(Field):
of int().
"""
super(IntegerField, self).clean(value)
+ if not self.required and value in EMPTY_VALUES:
+ return u''
try:
return int(value)
except (ValueError, TypeError):
@@ -170,6 +172,8 @@ class RegexField(Field):
Field.clean(self, value)
if value in EMPTY_VALUES: value = u''
value = smart_unicode(value)
+ if not self.required and value == u'':
+ return value
if not self.regex.search(value):
raise ValidationError(self.error_message)
return value
@@ -246,6 +250,8 @@ class ChoiceField(Field):
value = Field.clean(self, value)
if value in EMPTY_VALUES: value = u''
value = smart_unicode(value)
+ if not self.required and value == u'':
+ return value
valid_values = set([str(k) for k, v in self.choices])
if value not in valid_values:
raise ValidationError(u'Select a valid choice. %s is not one of the available choices.' % value)
@@ -259,10 +265,12 @@ class MultipleChoiceField(ChoiceField):
"""
Validates that the input is a list or tuple.
"""
- if not isinstance(value, (list, tuple)):
- raise ValidationError(u'Enter a list of values.')
if self.required and not value:
raise ValidationError(u'This field is required.')
+ elif not self.required and not value:
+ return []
+ if not isinstance(value, (list, tuple)):
+ raise ValidationError(u'Enter a list of values.')
new_value = []
for val in value:
val = smart_unicode(val)
@@ -277,6 +285,11 @@ class MultipleChoiceField(ChoiceField):
class ComboField(Field):
def __init__(self, fields=(), required=True, widget=None):
Field.__init__(self, required, widget)
+ # Set 'required' to False on the individual fields, because the
+ # required validation will be handled by ComboField, not by those
+ # individual fields.
+ for f in fields:
+ f.required = False
self.fields = fields
def clean(self, value):