summaryrefslogtreecommitdiff
path: root/django/newforms/fields.py
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-06-30 10:44:56 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-06-30 10:44:56 +0000
commitabcf1cb36d0bf22d5f2efa4dd85183a0341b33f8 (patch)
tree2833e7fe876be2854ff04e8ee892e62a5bdb00a8 /django/newforms/fields.py
parent8e816c8304051eb45e5fae05d8fab0254a6259ec (diff)
Fixed #5957 -- Enforce the "required" attribute on BooleanField in newforms.
This has been the documented behaviour for ages, but it wasn't correctly implemented. A required BooleanField must be True/checked, since False values aren't submitted. Ideal for things like "terms of service" agreements. Backwards incompatible (since required=True is the default for all fields). Unclear who the original patch was from, but Tai Lee and Alex have kept it up to date recently. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7799 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/newforms/fields.py')
-rw-r--r--django/newforms/fields.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index dfe46a2e3e..6734c5450e 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -535,13 +535,17 @@ class BooleanField(Field):
def clean(self, value):
"""Returns a Python boolean object."""
- super(BooleanField, self).clean(value)
# Explicitly check for the string 'False', which is what a hidden field
# will submit for False. Because bool("True") == True, we don't need to
# handle that explicitly.
if value == 'False':
- return False
- return bool(value)
+ value = False
+ else:
+ value = bool(value)
+ super(BooleanField, self).clean(value)
+ if not value and self.required:
+ raise ValidationError(self.error_messages['required'])
+ return value
class NullBooleanField(BooleanField):
"""