Author: jbronn
Date: 2010-09-11 16:26:19 -0500 (Sat, 11 Sep 2010)
New Revision: 13753

Modified:
   django/trunk/django/forms/fields.py
   django/trunk/tests/regressiontests/forms/widgets.py
Log:
Fixed #13390 -- `SplitDateTimeWidget` now recognizes when it's no longer 
required.  Thanks vaxXxa for bug report and patch.


Modified: django/trunk/django/forms/fields.py
===================================================================
--- django/trunk/django/forms/fields.py 2010-09-11 18:38:24 UTC (rev 13752)
+++ django/trunk/django/forms/fields.py 2010-09-11 21:26:19 UTC (rev 13753)
@@ -399,6 +399,8 @@
             # components: date and time.
             if len(value) != 2:
                 raise ValidationError(self.error_messages['invalid'])
+            if value[0] in validators.EMPTY_VALUES and value[1] in 
validators.EMPTY_VALUES:
+                return None
             value = '%s %s' % tuple(value)
         for format in self.input_formats or 
formats.get_format('DATETIME_INPUT_FORMATS'):
             try:

Modified: django/trunk/tests/regressiontests/forms/widgets.py
===================================================================
--- django/trunk/tests/regressiontests/forms/widgets.py 2010-09-11 18:38:24 UTC 
(rev 13752)
+++ django/trunk/tests/regressiontests/forms/widgets.py 2010-09-11 21:26:19 UTC 
(rev 13753)
@@ -1305,3 +1305,21 @@
         # w2 ought to be independent of w1, since MultiWidget ought
         # to make a copy of its sub-widgets when it is copied.
         self.assertEqual(w1.choices, [1,2,3])
+
+    def test_13390(self):
+        # See ticket #13390
+        class SplitDateForm(forms.Form):
+            field = forms.DateTimeField(widget=forms.SplitDateTimeWidget, 
required=False)
+
+        form = SplitDateForm({'field': ''})
+        self.assertTrue(form.is_valid())
+        form = SplitDateForm({'field': ['', '']})
+        self.assertTrue(form.is_valid())
+
+        class SplitDateRequiredForm(forms.Form):
+            field = forms.DateTimeField(widget=forms.SplitDateTimeWidget, 
required=True)
+
+        form = SplitDateRequiredForm({'field': ''})
+        self.assertFalse(form.is_valid())
+        form = SplitDateRequiredForm({'field': ['', '']})
+        self.assertFalse(form.is_valid())

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to