From 76551ddfa98cabe47e31553ad324b7945a80a3cf Mon Sep 17 00:00:00 2001 From: Greg Chapple Date: Thu, 12 Mar 2015 21:41:17 +0000 Subject: [PATCH] Added request parameter to FormPreview.parse_params - fixes #22 --- docs/changelog.rst | 3 +++ formtools/preview.py | 4 ++-- tests/tests.py | 13 +++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 19270a2..a1531f3 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -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() + `. + - Added the ``request`` parameter to :meth:`WizardView.get_prefix() `. diff --git a/formtools/preview.py b/formtools/preview.py index bcd84af..b4818da 100644 --- a/formtools/preview.py +++ b/formtools/preview.py @@ -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. diff --git a/tests/tests.py b/tests/tests.py index fd7c2bd..6859b34 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -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.