[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. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@13754 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
e4bd5e8a2d
commit
864361aabd
|
@ -399,6 +399,8 @@ class DateTimeField(Field):
|
|||
# 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:
|
||||
|
|
|
@ -1310,3 +1310,21 @@ class WidgetTests(TestCase):
|
|||
# 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())
|
||||
|
|
Loading…
Reference in New Issue