Fixed #17401 -- Made SelectDateWidget.render reflect wrong value
Thanks Marcin Wrobel for the initial patch.
This commit is contained in:
parent
23c612199a
commit
4b8979e477
|
@ -977,10 +977,10 @@ class SelectDateWidget(Widget):
|
||||||
year_val, month_val, day_val = v.year, v.month, v.day
|
year_val, month_val, day_val = v.year, v.month, v.day
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
else:
|
if year_val is None:
|
||||||
match = self.date_re.match(value)
|
match = self.date_re.match(value)
|
||||||
if match:
|
if match:
|
||||||
year_val, month_val, day_val = [int(v) for v in match.groups()]
|
year_val, month_val, day_val = [int(val) for val in match.groups()]
|
||||||
html = {}
|
html = {}
|
||||||
choices = [(i, i) for i in self.years]
|
choices = [(i, i) for i in self.years]
|
||||||
html['year'] = self.create_select(name, self.year_field, value, year_val, choices, self.year_none_value)
|
html['year'] = self.create_select(name, self.year_field, value, year_val, choices, self.year_none_value)
|
||||||
|
|
|
@ -1875,6 +1875,9 @@ class SelectDateWidgetTests(TestCase):
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Even with an invalid date, the widget should reflect the entered value (#17401).
|
||||||
|
self.assertEqual(w.render('mydate', '2010-02-30').count('selected="selected"'), 3)
|
||||||
|
|
||||||
# Years before 1900 work
|
# Years before 1900 work
|
||||||
w = SelectDateWidget(years=('1899',))
|
w = SelectDateWidget(years=('1899',))
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
Loading…
Reference in New Issue