Author: jbronn
Date: 2010-09-11 16:28:00 -0500 (Sat, 11 Sep 2010)
New Revision: 13754

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

Backport of r13753 from trunk.


Modified: django/branches/releases/1.2.X/django/forms/fields.py
===================================================================
--- django/branches/releases/1.2.X/django/forms/fields.py       2010-09-11 
21:26:19 UTC (rev 13753)
+++ django/branches/releases/1.2.X/django/forms/fields.py       2010-09-11 
21:28:00 UTC (rev 13754)
@@ -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/branches/releases/1.2.X/tests/regressiontests/forms/widgets.py
===================================================================
--- django/branches/releases/1.2.X/tests/regressiontests/forms/widgets.py       
2010-09-11 21:26:19 UTC (rev 13753)
+++ django/branches/releases/1.2.X/tests/regressiontests/forms/widgets.py       
2010-09-11 21:28:00 UTC (rev 13754)
@@ -1310,3 +1310,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