[1.5.x] Fixed #19537 -- Made CheckboxInput._has_changed handle 'False' string

Thanks dibrovsd@gmail.com for the report.
Backport of d11038acb2 from master.
This commit is contained in:
Claude Paroz 2012-12-31 10:18:59 +01:00
parent fa71536129
commit 814c3b2e2a
2 changed files with 5 additions and 0 deletions

View File

@ -533,6 +533,9 @@ class CheckboxInput(Widget):
def _has_changed(self, initial, data): def _has_changed(self, initial, data):
# Sometimes data or initial could be None or '' which should be the # Sometimes data or initial could be None or '' which should be the
# same thing as False. # same thing as False.
if initial == 'False':
# show_hidden_initial may have transformed False to 'False'
initial = False
return bool(initial) != bool(data) return bool(initial) != bool(data)
class Select(Widget): class Select(Widget):

View File

@ -240,6 +240,8 @@ class FormsWidgetTestCase(TestCase):
self.assertTrue(w._has_changed(False, 'on')) self.assertTrue(w._has_changed(False, 'on'))
self.assertFalse(w._has_changed(True, 'on')) self.assertFalse(w._has_changed(True, 'on'))
self.assertTrue(w._has_changed(True, '')) self.assertTrue(w._has_changed(True, ''))
# Initial value may have mutated to a string due to show_hidden_initial (#19537)
self.assertTrue(w._has_changed('False', 'on'))
def test_select(self): def test_select(self):
w = Select() w = Select()