mirror of
https://github.com/django/django.git
synced 2025-07-04 17:59:13 +00:00
[1.2.X] Fixed #14576, #14946 - FormWizard.done() method doesn't get passed the last form in the list.
Thanks to cyberdelia for report and test, and steph for the initial patch. Backport of r14574 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15044 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
56007af321
commit
6c32577d31
@ -214,3 +214,26 @@ class WizardTests(TestCase):
|
|||||||
wizard(DummyRequest(POST=data))
|
wizard(DummyRequest(POST=data))
|
||||||
self.assertTrue(reached[0])
|
self.assertTrue(reached[0])
|
||||||
|
|
||||||
|
def test_14576(self):
|
||||||
|
"""
|
||||||
|
Regression test for ticket #14576.
|
||||||
|
|
||||||
|
The form of the last step is not passed to the done method.
|
||||||
|
"""
|
||||||
|
reached = [False]
|
||||||
|
that = self
|
||||||
|
|
||||||
|
class Wizard(WizardClass):
|
||||||
|
def done(self, request, form_list):
|
||||||
|
reached[0] = True
|
||||||
|
that.assertTrue(len(form_list) == 2)
|
||||||
|
|
||||||
|
wizard = Wizard([WizardPageOneForm,
|
||||||
|
WizardPageTwoForm])
|
||||||
|
|
||||||
|
data = {"0-field": "test",
|
||||||
|
"1-field": "test2",
|
||||||
|
"hash_0": "2fdbefd4c0cad51509478fbacddf8b13",
|
||||||
|
"wizard_step": "1"}
|
||||||
|
wizard(DummyRequest(POST=data))
|
||||||
|
self.assertTrue(reached[0])
|
||||||
|
@ -94,9 +94,9 @@ class FormWizard(object):
|
|||||||
# Since the hashes only take into account values, and not other
|
# Since the hashes only take into account values, and not other
|
||||||
# other validation the form might do, we must re-do validation
|
# other validation the form might do, we must re-do validation
|
||||||
# now for security reasons.
|
# now for security reasons.
|
||||||
current_form_list = [self.get_form(i, request.POST) for i in range(current_step)]
|
previous_form_list = [self.get_form(i, request.POST) for i in range(current_step)]
|
||||||
|
|
||||||
for i, f in enumerate(current_form_list):
|
for i, f in enumerate(previous_form_list):
|
||||||
if request.POST.get("hash_%d" % i, '') != self.security_hash(request, f):
|
if request.POST.get("hash_%d" % i, '') != self.security_hash(request, f):
|
||||||
return self.render_hash_failure(request, i)
|
return self.render_hash_failure(request, i)
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ class FormWizard(object):
|
|||||||
|
|
||||||
|
|
||||||
if next_step == self.num_steps():
|
if next_step == self.num_steps():
|
||||||
return self.done(request, current_form_list)
|
return self.done(request, previous_form_list + [form])
|
||||||
else:
|
else:
|
||||||
form = self.get_form(next_step)
|
form = self.get_form(next_step)
|
||||||
self.step = current_step = next_step
|
self.step = current_step = next_step
|
||||||
|
Loading…
x
Reference in New Issue
Block a user