Fixed #18 -- pass request object to WizardView.get_prefix
This commit is contained in:
@@ -16,6 +16,7 @@ view.
|
||||
|
||||
preview
|
||||
wizard
|
||||
releases
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
10
docs/releases.rst
Normal file
10
docs/releases.rst
Normal 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>`.
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user