From a9b2ac25d1760e1b8e01632544b7f503ccab8577 Mon Sep 17 00:00:00 2001 From: Justin Bronn Date: Mon, 22 Feb 2010 05:00:36 +0000 Subject: [PATCH] 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 --- django/contrib/formtools/preview.py | 8 ++++++++ docs/ref/contrib/formtools/form-preview.txt | 13 +++++++++++++ docs/ref/contrib/formtools/form-wizard.txt | 4 ++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/django/contrib/formtools/preview.py b/django/contrib/formtools/preview.py index 856343a0df..f3d86ee037 100644 --- a/django/contrib/formtools/preview.py +++ b/django/contrib/formtools/preview.py @@ -60,6 +60,7 @@ class FormPreview(object): f = self.form(request.POST, auto_id=AUTO_ID) context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state} if f.is_valid(): + self.process_preview(request, f, context) context['hash_field'] = self.unused_name('hash') context['hash_value'] = self.security_hash(request, f) return render_to_response(self.preview_template, context, context_instance=RequestContext(request)) @@ -96,6 +97,13 @@ class FormPreview(object): """ 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): """ Calculates the security hash for the given HttpRequest and Form instances. diff --git a/docs/ref/contrib/formtools/form-preview.txt b/docs/ref/contrib/formtools/form-preview.txt index f786b74305..ece69067ee 100644 --- a/docs/ref/contrib/formtools/form-preview.txt +++ b/docs/ref/contrib/formtools/form-preview.txt @@ -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 FormPreview subclass. See :file:`django/contrib/formtools/templates` for the 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. diff --git a/docs/ref/contrib/formtools/form-wizard.txt b/docs/ref/contrib/formtools/form-wizard.txt index 0449bb9cd0..5ef862ce3d 100644 --- a/docs/ref/contrib/formtools/form-wizard.txt +++ b/docs/ref/contrib/formtools/form-wizard.txt @@ -199,8 +199,8 @@ wizard takes a list of your :class:`~django.forms.Form` objects as arguments:: (r'^contact/$', ContactWizard([ContactForm1, ContactForm2])), ) -Advanced FormWizard methods -=========================== +Advanced ``FormWizard`` methods +=============================== .. class:: FormWizard