summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2012-02-04 16:05:58 +0000
committerJannis Leidel <jannis@leidel.info>2012-02-04 16:05:58 +0000
commit56d787df99a923cf96d02f9cd07ca8d383dbc028 (patch)
tree43283c0cd75705c24e160ceed7e3c919fc5d98cd
parente734477bd739de737d98deef91dfe9f7b8c1c030 (diff)
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
-rw-r--r--django/forms/extras/widgets.py9
-rw-r--r--tests/regressiontests/forms/tests/extra.py12
2 files changed, 18 insertions, 3 deletions
diff --git a/django/forms/extras/widgets.py b/django/forms/extras/widgets.py
index 4fb4869e68..65d6bf15f5 100644
--- a/django/forms/extras/widgets.py
+++ b/django/forms/extras/widgets.py
@@ -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) \ No newline at end of file
+ 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)
diff --git a/tests/regressiontests/forms/tests/extra.py b/tests/regressiontests/forms/tests/extra.py
index 3c5dfabb61..c873af7a8c 100644
--- a/tests/regressiontests/forms/tests/extra.py
+++ b/tests/regressiontests/forms/tests/extra.py
@@ -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):