Fixed #13390 -- `SplitDateTimeWidget` now recognizes when it's no longer required. Thanks vaxXxa for bug report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13753 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
9e04c3b744
commit
4311402216
|
@ -399,6 +399,8 @@ class DateTimeField(Field):
|
||||||
# components: date and time.
|
# components: date and time.
|
||||||
if len(value) != 2:
|
if len(value) != 2:
|
||||||
raise ValidationError(self.error_messages['invalid'])
|
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)
|
value = '%s %s' % tuple(value)
|
||||||
for format in self.input_formats or formats.get_format('DATETIME_INPUT_FORMATS'):
|
for format in self.input_formats or formats.get_format('DATETIME_INPUT_FORMATS'):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1305,3 +1305,21 @@ class WidgetTests(TestCase):
|
||||||
# w2 ought to be independent of w1, since MultiWidget ought
|
# w2 ought to be independent of w1, since MultiWidget ought
|
||||||
# to make a copy of its sub-widgets when it is copied.
|
# to make a copy of its sub-widgets when it is copied.
|
||||||
self.assertEqual(w1.choices, [1,2,3])
|
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