[1.5.X] Added WizardView.file_storage exception message and docs
Thanks Danilo Bargen for the patch.
Backport of af7ea808d8
from master
This commit is contained in:
parent
a8c415f844
commit
c5d0f49dc2
|
@ -69,7 +69,9 @@ class BaseStorage(object):
|
||||||
wizard_files = self.data[self.step_files_key].get(step, {})
|
wizard_files = self.data[self.step_files_key].get(step, {})
|
||||||
|
|
||||||
if wizard_files and not self.file_storage:
|
if wizard_files and not self.file_storage:
|
||||||
raise NoFileStorageConfigured
|
raise NoFileStorageConfigured(
|
||||||
|
"You need to define 'file_storage' in your "
|
||||||
|
"wizard view in order to handle file uploads.")
|
||||||
|
|
||||||
files = {}
|
files = {}
|
||||||
for field, field_dict in six.iteritems(wizard_files):
|
for field, field_dict in six.iteritems(wizard_files):
|
||||||
|
@ -81,7 +83,9 @@ class BaseStorage(object):
|
||||||
|
|
||||||
def set_step_files(self, step, files):
|
def set_step_files(self, step, files):
|
||||||
if files and not self.file_storage:
|
if files and not self.file_storage:
|
||||||
raise NoFileStorageConfigured
|
raise NoFileStorageConfigured(
|
||||||
|
"You need to define 'file_storage' in your "
|
||||||
|
"wizard view in order to handle file uploads.")
|
||||||
|
|
||||||
if step not in self.data[self.step_files_key]:
|
if step not in self.data[self.step_files_key]:
|
||||||
self.data[self.step_files_key][step] = {}
|
self.data[self.step_files_key][step] = {}
|
||||||
|
|
|
@ -174,7 +174,9 @@ class WizardView(TemplateView):
|
||||||
for field in six.itervalues(form.base_fields):
|
for field in six.itervalues(form.base_fields):
|
||||||
if (isinstance(field, forms.FileField) and
|
if (isinstance(field, forms.FileField) and
|
||||||
not hasattr(cls, 'file_storage')):
|
not hasattr(cls, 'file_storage')):
|
||||||
raise NoFileStorageConfigured
|
raise NoFileStorageConfigured(
|
||||||
|
"You need to define 'file_storage' in your "
|
||||||
|
"wizard view in order to handle file uploads.")
|
||||||
|
|
||||||
# build the kwargs for the wizardview instances
|
# build the kwargs for the wizardview instances
|
||||||
kwargs['form_list'] = init_form_list
|
kwargs['form_list'] = init_form_list
|
||||||
|
@ -436,8 +438,8 @@ class WizardView(TemplateView):
|
||||||
def get_all_cleaned_data(self):
|
def get_all_cleaned_data(self):
|
||||||
"""
|
"""
|
||||||
Returns a merged dictionary of all step cleaned_data dictionaries.
|
Returns a merged dictionary of all step cleaned_data dictionaries.
|
||||||
If a step contains a `FormSet`, the key will be prefixed with formset
|
If a step contains a `FormSet`, the key will be prefixed with
|
||||||
and contain a list of the formset cleaned_data dictionaries.
|
'formset-' and contain a list of the formset cleaned_data dictionaries.
|
||||||
"""
|
"""
|
||||||
cleaned_data = {}
|
cleaned_data = {}
|
||||||
for form_key in self.get_form_list():
|
for form_key in self.get_form_list():
|
||||||
|
@ -458,8 +460,8 @@ class WizardView(TemplateView):
|
||||||
def get_cleaned_data_for_step(self, step):
|
def get_cleaned_data_for_step(self, step):
|
||||||
"""
|
"""
|
||||||
Returns the cleaned data for a given `step`. Before returning the
|
Returns the cleaned data for a given `step`. Before returning the
|
||||||
cleaned data, the stored values are being revalidated through the
|
cleaned data, the stored values are revalidated through the form.
|
||||||
form. If the data doesn't validate, None will be returned.
|
If the data doesn't validate, None will be returned.
|
||||||
"""
|
"""
|
||||||
if step in self.form_list:
|
if step in self.form_list:
|
||||||
form_obj = self.get_form(step=step,
|
form_obj = self.get_form(step=step,
|
||||||
|
|
|
@ -493,6 +493,21 @@ Advanced ``WizardView`` methods
|
||||||
context = self.get_context_data(form=form, **kwargs)
|
context = self.get_context_data(form=form, **kwargs)
|
||||||
return self.render_to_response(context)
|
return self.render_to_response(context)
|
||||||
|
|
||||||
|
.. method:: WizardView.get_cleaned_data_for_step(step)
|
||||||
|
|
||||||
|
This method returns the cleaned data for a given ``step``. Before returning
|
||||||
|
the cleaned data, the stored values are revalidated through the form. If
|
||||||
|
the data doesn't validate, ``None`` will be returned.
|
||||||
|
|
||||||
|
.. method:: WizardView.get_all_cleaned_data()
|
||||||
|
|
||||||
|
This method returns a merged dictionary of all form steps' ``cleaned_data``
|
||||||
|
dictionaries. If a step contains a ``FormSet``, the key will be prefixed
|
||||||
|
with ``formset-`` and contain a list of the formset's ``cleaned_data``
|
||||||
|
dictionaries. Note that if two or more steps have a field with the same
|
||||||
|
name, the value for that field from the latest step will overwrite the
|
||||||
|
value from any earlier steps.
|
||||||
|
|
||||||
Providing initial data for the forms
|
Providing initial data for the forms
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
|
@ -534,6 +549,16 @@ This storage will temporarily store the uploaded files for the wizard. The
|
||||||
:attr:`file_storage` attribute should be a
|
:attr:`file_storage` attribute should be a
|
||||||
:class:`~django.core.files.storage.Storage` subclass.
|
:class:`~django.core.files.storage.Storage` subclass.
|
||||||
|
|
||||||
|
Django provides a built-in storage class (see :ref:`the built-in filesystem
|
||||||
|
storage class <builtin-fs-storage>`)::
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.core.files.storage import FileSystemStorage
|
||||||
|
|
||||||
|
class CustomWizardView(WizardView):
|
||||||
|
...
|
||||||
|
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'photos'))
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
Please remember to take care of removing old files as the
|
Please remember to take care of removing old files as the
|
||||||
|
|
|
@ -139,6 +139,8 @@ useful -- you can use the global default storage system::
|
||||||
|
|
||||||
See :doc:`/ref/files/storage` for the file storage API.
|
See :doc:`/ref/files/storage` for the file storage API.
|
||||||
|
|
||||||
|
.. _builtin-fs-storage:
|
||||||
|
|
||||||
The built-in filesystem storage class
|
The built-in filesystem storage class
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue