Fixed #9147 -- Added `FormPreview.process_preview` customization hook. Thanks, bthomas and thalin.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12486 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Justin Bronn 2010-02-22 05:00:36 +00:00
parent 9810178706
commit a9b2ac25d1
3 changed files with 23 additions and 2 deletions

View File

@ -60,6 +60,7 @@ class FormPreview(object):
f = self.form(request.POST, auto_id=AUTO_ID) f = self.form(request.POST, auto_id=AUTO_ID)
context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state} context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state}
if f.is_valid(): if f.is_valid():
self.process_preview(request, f, context)
context['hash_field'] = self.unused_name('hash') context['hash_field'] = self.unused_name('hash')
context['hash_value'] = self.security_hash(request, f) context['hash_value'] = self.security_hash(request, f)
return render_to_response(self.preview_template, context, context_instance=RequestContext(request)) return render_to_response(self.preview_template, context, context_instance=RequestContext(request))
@ -96,6 +97,13 @@ class FormPreview(object):
""" """
pass pass
def process_preview(self, request, form, context):
"""
Given a validated form, performs any extra processing before displaying
the preview page, and saves any extra data in context.
"""
pass
def security_hash(self, request, form): def security_hash(self, request, form):
""" """
Calculates the security hash for the given HttpRequest and Form instances. Calculates the security hash for the given HttpRequest and Form instances.

View File

@ -108,3 +108,16 @@ These values can be overridden for a particular form preview by setting
:attr:`~django.contrib.formtools.FormPreview.form_template` attributes on the :attr:`~django.contrib.formtools.FormPreview.form_template` attributes on the
FormPreview subclass. See :file:`django/contrib/formtools/templates` for the FormPreview subclass. See :file:`django/contrib/formtools/templates` for the
default templates. default templates.
Advanced ``FormPreview`` methods
================================
.. versionadded:: 1.2
.. method:: FormPreview.process_preview
Given a validated form, performs any extra processing before displaying the
preview page, and saves any extra data in context.
By default, this method is empty. It is called after the form is validated,
but before the context is modified with hash information and rendered.

View File

@ -199,8 +199,8 @@ wizard takes a list of your :class:`~django.forms.Form` objects as arguments::
(r'^contact/$', ContactWizard([ContactForm1, ContactForm2])), (r'^contact/$', ContactWizard([ContactForm1, ContactForm2])),
) )
Advanced FormWizard methods Advanced ``FormWizard`` methods
=========================== ===============================
.. class:: FormWizard .. class:: FormWizard