Fixed #17542 -- Gracefully handle errors when checking if the values of a SelectDateWidget has changed if it's not required. Thanks, pigletto.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17436 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
e734477bd7
commit
56d787df99
|
@ -136,6 +136,9 @@ class SelectDateWidget(Widget):
|
|||
return select_html
|
||||
|
||||
def _has_changed(self, initial, data):
|
||||
input_format = get_format('DATE_INPUT_FORMATS')[0]
|
||||
data = datetime_safe.datetime.strptime(data, input_format).date()
|
||||
return super(SelectDateWidget, self)._has_changed(initial, data)
|
||||
try:
|
||||
input_format = get_format('DATE_INPUT_FORMATS')[0]
|
||||
data = datetime_safe.datetime.strptime(data, input_format).date()
|
||||
except (TypeError, ValueError):
|
||||
pass
|
||||
return super(SelectDateWidget, self)._has_changed(initial, data)
|
||||
|
|
|
@ -18,6 +18,9 @@ from .error_messages import AssertFormErrorsMixin
|
|||
class GetDate(Form):
|
||||
mydate = DateField(widget=SelectDateWidget)
|
||||
|
||||
class GetNotRequiredDate(Form):
|
||||
mydate = DateField(widget=SelectDateWidget, required=False)
|
||||
|
||||
class GetDateShowHiddenInitial(Form):
|
||||
mydate = DateField(widget=SelectDateWidget, show_hidden_initial=True)
|
||||
|
||||
|
@ -619,6 +622,15 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
|
|||
self.assertTrue(FormWithFile().is_multipart())
|
||||
self.assertTrue(FormWithImage().is_multipart())
|
||||
|
||||
def test_field_not_required(self):
|
||||
b = GetNotRequiredDate({
|
||||
'mydate_year': '',
|
||||
'mydate_month': '',
|
||||
'mydate_day': ''
|
||||
})
|
||||
self.assertFalse(b.has_changed())
|
||||
|
||||
|
||||
|
||||
class FormsExtraL10NTestCase(TestCase):
|
||||
def setUp(self):
|
||||
|
|
Loading…
Reference in New Issue