Added request parameter to FormPreview.parse_params - fixes #22

This commit is contained in:
Greg Chapple 2015-03-12 21:41:17 +00:00
parent 653fe2630d
commit 76551ddfa9
3 changed files with 18 additions and 2 deletions

View File

@ -6,6 +6,9 @@ This page details the changes in the various ``django-formtools`` releases.
1.0 (2015-03-25)
----------------
- Added the ``request`` parameter to :meth:`FormPreview.parse_params()
<formtools.preview.FormPreview.parse_params>`.
- Added the ``request`` parameter to :meth:`WizardView.get_prefix()
<formtools.wizard.views.WizardView.get_prefix>`.

View File

@ -26,7 +26,7 @@ class FormPreview(object):
'1': 'preview',
'2': 'post',
}.get(request.POST.get(self.unused_name('stage')), 'preview')
self.parse_params(*args, **kwargs)
self.parse_params(request, *args, **kwargs)
try:
method = getattr(self, stage + '_' + request.method.lower())
except AttributeError:
@ -118,7 +118,7 @@ class FormPreview(object):
'state': self.state,
}
def parse_params(self, *args, **kwargs):
def parse_params(self, request, *args, **kwargs):
"""
Given captured args and kwargs from the URLconf, saves something in
self.state and/or raises :class:`~django.http.Http404` if necessary.

View File

@ -19,6 +19,9 @@ success_string_encoded = success_string.encode()
class TestFormPreview(preview.FormPreview):
def parse_params(self, request, *args, **kwargs):
self.state['user'] = request.user
def get_context(self, request, form):
context = super(TestFormPreview, self).get_context(request, form)
context.update({'custom_context': True})
@ -47,6 +50,16 @@ class PreviewTests(TestCase):
self.input = input_template % (self.preview.unused_name('stage'), "%d")
self.test_data = {'field1': 'foo', 'field1_': 'asdf'}
def test_parse_params_takes_request_object(self):
"""
FormPreview.parse_params takes a request object as the first argument.
"""
preview = TestFormPreview(TestForm)
response = self.client.get('/preview/')
state = response.context['state']
self.assertTrue(state.get('user') is not None, "Expected to find a "
"user key in response.context['state']")
def test_unused_name(self):
"""
Verifies name mangling to get uniue field name.