mirror of
https://github.com/django/django.git
synced 2025-07-04 09:49:12 +00:00
newforms-admin: Fixed #7160 -- MultiWidget._has_changed was short-circuiting while testing for changed data in its widgets. Added tests to ensure this won't get broken in the future.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7517 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
be31882eee
commit
f793f27df0
@ -591,9 +591,9 @@ class MultiWidget(Widget):
|
|||||||
else:
|
else:
|
||||||
initial = self.decompress(initial)
|
initial = self.decompress(initial)
|
||||||
for widget, initial, data in zip(self.widgets, initial, data):
|
for widget, initial, data in zip(self.widgets, initial, data):
|
||||||
if not widget._has_changed(initial, data):
|
if widget._has_changed(initial, data):
|
||||||
return False
|
return True
|
||||||
return True
|
return False
|
||||||
|
|
||||||
def format_output(self, rendered_widgets):
|
def format_output(self, rendered_widgets):
|
||||||
"""
|
"""
|
||||||
|
@ -963,10 +963,19 @@ u'<input id="foo_0" type="text" class="big" value="john" name="name_0" /><br /><
|
|||||||
u'<input id="bar_0" type="text" class="big" value="john" name="name_0" /><br /><input id="bar_1" type="text" class="small" value="lennon" name="name_1" />'
|
u'<input id="bar_0" type="text" class="big" value="john" name="name_0" /><br /><input id="bar_1" type="text" class="small" value="lennon" name="name_1" />'
|
||||||
|
|
||||||
>>> w = MyMultiWidget(widgets=(TextInput(), TextInput()))
|
>>> w = MyMultiWidget(widgets=(TextInput(), TextInput()))
|
||||||
>>> w._has_changed(None, ['john', 'lennon'])
|
# test with no initial data
|
||||||
|
>>> w._has_changed(None, [u'john', u'lennon'])
|
||||||
True
|
True
|
||||||
>>> w._has_changed('john__lennon', ['john', 'lennon'])
|
# test when the data is the same as initial
|
||||||
|
>>> w._has_changed(u'john__lennon', [u'john', u'lennon'])
|
||||||
False
|
False
|
||||||
|
# test when the first widget's data has changed
|
||||||
|
>>> w._has_changed(u'john__lennon', [u'alfred', u'lennon'])
|
||||||
|
True
|
||||||
|
# test when the last widget's data has changed. this ensures that it is not
|
||||||
|
# short circuiting while testing the widgets.
|
||||||
|
>>> w._has_changed(u'john__lennon', [u'john', u'denver'])
|
||||||
|
True
|
||||||
|
|
||||||
# SplitDateTimeWidget #########################################################
|
# SplitDateTimeWidget #########################################################
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user