58 def preview_post(self, request): |
58 def preview_post(self, request): |
59 "Validates the POST data. If valid, displays the preview page. Else, redisplays form." |
59 "Validates the POST data. If valid, displays the preview page. Else, redisplays form." |
60 f = self.form(request.POST, auto_id=AUTO_ID) |
60 f = self.form(request.POST, auto_id=AUTO_ID) |
61 context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state} |
61 context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state} |
62 if f.is_valid(): |
62 if f.is_valid(): |
|
63 self.process_preview(request, f, context) |
63 context['hash_field'] = self.unused_name('hash') |
64 context['hash_field'] = self.unused_name('hash') |
64 context['hash_value'] = self.security_hash(request, f) |
65 context['hash_value'] = self.security_hash(request, f) |
65 return render_to_response(self.preview_template, context, context_instance=RequestContext(request)) |
66 return render_to_response(self.preview_template, context, context_instance=RequestContext(request)) |
66 else: |
67 else: |
67 return render_to_response(self.form_template, context, context_instance=RequestContext(request)) |
68 return render_to_response(self.form_template, context, context_instance=RequestContext(request)) |
94 user_id to make sure it's a valid user and/or save it for later, for |
95 user_id to make sure it's a valid user and/or save it for later, for |
95 use in done(). |
96 use in done(). |
96 """ |
97 """ |
97 pass |
98 pass |
98 |
99 |
|
100 def process_preview(self, request, form, context): |
|
101 """ |
|
102 Given a validated form, performs any extra processing before displaying |
|
103 the preview page, and saves any extra data in context. |
|
104 """ |
|
105 pass |
|
106 |
99 def security_hash(self, request, form): |
107 def security_hash(self, request, form): |
100 """ |
108 """ |
101 Calculates the security hash for the given HttpRequest and Form instances. |
109 Calculates the security hash for the given HttpRequest and Form instances. |
102 |
110 |
103 Subclasses may want to take into account request-specific information, |
111 Subclasses may want to take into account request-specific information, |