class EditableFormPreview(FormPreview):
    reedit_action= [u'ReEdit',]

    def post_post(self, request):
        "Validates the POST data. If valid, calls done(). Else, redisplays form."
        f = self.form(request.POST, auto_id=AUTO_ID)
        reedit = False
        if request.POST.has_key('action') and request.POST['action'] in self.reedit_action:
            reedit = True

        if f.is_valid() and reedit == False:
            if self.security_hash(request, f) != request.POST.get(self.unused_name('hash')):
                return self.failed_hash(request) # Security hash failed.
            return self.done(request, f.cleaned_data)
        else:
            return render_to_response(self.form_template,
                {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state},
                context_instance=RequestContext(request))