Skip to content

Commit 864361a

Browse files
committed
[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
1 parent e4bd5e8 commit 864361a

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

django/forms/fields.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,8 @@ def to_python(self, value):
399399
# components: date and time.
400400
if len(value) != 2:
401401
raise ValidationError(self.error_messages['invalid'])
402+
if value[0] in validators.EMPTY_VALUES and value[1] in validators.EMPTY_VALUES:
403+
return None
402404
value = '%s %s' % tuple(value)
403405
for format in self.input_formats or formats.get_format('DATETIME_INPUT_FORMATS'):
404406
try:

tests/regressiontests/forms/widgets.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,3 +1310,21 @@ def test_12048(self):
13101310
# w2 ought to be independent of w1, since MultiWidget ought
13111311
# to make a copy of its sub-widgets when it is copied.
13121312
self.assertEqual(w1.choices, [1,2,3])
1313+
1314+
def test_13390(self):
1315+
# See ticket #13390
1316+
class SplitDateForm(forms.Form):
1317+
field = forms.DateTimeField(widget=forms.SplitDateTimeWidget, required=False)
1318+
1319+
form = SplitDateForm({'field': ''})
1320+
self.assertTrue(form.is_valid())
1321+
form = SplitDateForm({'field': ['', '']})
1322+
self.assertTrue(form.is_valid())
1323+
1324+
class SplitDateRequiredForm(forms.Form):
1325+
field = forms.DateTimeField(widget=forms.SplitDateTimeWidget, required=True)
1326+
1327+
form = SplitDateRequiredForm({'field': ''})
1328+
self.assertFalse(form.is_valid())
1329+
form = SplitDateRequiredForm({'field': ['', '']})
1330+
self.assertFalse(form.is_valid())

0 commit comments

Comments
 (0)