Fixed #18 -- pass request object to WizardView.get_prefix

This commit is contained in:
Greg Chapple
2014-11-27 10:48:49 +00:00
parent 571df93d03
commit a833a2b6e5
5 changed files with 48 additions and 4 deletions

View File

@@ -16,6 +16,7 @@ view.
preview
wizard
releases
Installation
============

10
docs/releases.rst Normal file
View File

@@ -0,0 +1,10 @@
Releases
========
This page details the changes in the various ``django-formtools`` releases.
1.0
---
- Added the ``request`` parameter to :meth:`WizardView.get_prefix()
<formtools.wizard.views.WizardView.get_prefix>`.

View File

@@ -416,7 +416,7 @@ Advanced ``WizardView`` methods
context.update({'another_var': True})
return context
.. method:: WizardView.get_prefix(*args, **kwargs)
.. method:: WizardView.get_prefix(request, *args, **kwargs)
This method returns a prefix for use by the storage backends. Backends use
the prefix as a mechanism to allow data to be stored separately for each
@@ -428,10 +428,14 @@ Advanced ``WizardView`` methods
Default implementation::
def get_prefix(self, *args, **kwargs):
def get_prefix(self, request, *args, **kwargs):
# use the lowercase underscore version of the class name
return normalize_name(self.__class__.__name__)
.. versionchanged:: 1.0
The ``request`` parameter was added.
.. method:: WizardView.get_form(step=None, data=None, files=None)
This method constructs the form for a given ``step``. If no ``step`` is

View File

@@ -192,7 +192,7 @@ class WizardView(TemplateView):
kwargs['form_list'] = computed_form_list
return kwargs
def get_prefix(self, *args, **kwargs):
def get_prefix(self, request, *args, **kwargs):
# TODO: Add some kind of unique id to prefix
return normalize_name(self.__class__.__name__)
@@ -230,7 +230,7 @@ class WizardView(TemplateView):
response gets updated by the storage engine (for example add cookies).
"""
# add the storage engine to the current wizardview instance
self.prefix = self.get_prefix(*args, **kwargs)
self.prefix = self.get_prefix(request, *args, **kwargs)
self.storage = get_storage(self.storage_name, self.prefix, request,
getattr(self, 'file_storage', None))
self.steps = StepsHelper(self)

View File

@@ -391,6 +391,35 @@ class WizardTestGenericViewInterface(TestCase):
self.assertEqual(response.context_data['another_key'], 'another_value')
class WizardTestPrefix(TestCase):
def test_get_prefix(self):
class TestWizard(CookieWizardView):
def get_prefix(self, request, *args, **kwargs):
return 'sample_prefix'
factory = RequestFactory()
view = TestWizard.as_view([forms.Form])
response = view(factory.get('/'))
prefix = response.context_data['wizard']['management_form'].prefix
self.assertEqual(prefix, 'sample_prefix')
def test_get_prefix_using_request_object(self):
class TestWizard(CookieWizardView):
def get_prefix(self, request, *args, **kwargs):
return request.prefix_value
factory = RequestFactory()
view = TestWizard.as_view([forms.Form])
request = factory.get('/')
request.prefix_value = 'text_prefix'
response = view(request)
prefix = response.context_data['wizard']['management_form'].prefix
self.assertEqual(prefix, 'text_prefix')
@skipIfCustomUser
class WizardFormKwargsOverrideTests(TestCase):
def setUp(self):