feed current formdata for substitution variables, even if incomplete

This commit is contained in:
Frédéric Péters 2012-05-24 11:15:05 +02:00
parent edbd5b3a38
commit 73eb9d70ac
1 changed files with 19 additions and 9 deletions

View File

@ -365,10 +365,15 @@ class FormPage(Directory):
_('You need to enable javascript to complete this form')
'</noscript>'
displayed_fields = []
form = self.formdef.create_form(page_no, displayed_fields)
session = get_session()
if page_no > 0:
magictoken = get_request().form['magictoken']
self.feed_current_data(magictoken)
form = self.formdef.create_form(page_no, displayed_fields)
if True or [x for x in displayed_fields if x.prefill and
x.prefill.get('type') == 'wsf'] and (
session.lasso_session_dump and
@ -436,14 +441,6 @@ class FormPage(Directory):
v = user.form_data.get(x)
break
elif t == 'formula':
# create a fake FormData to feed variables
formdata = FormData()
formdata._formdef = self.formdef
formdata.user = get_request().user
formdata.data = data
formdata.status = str('')
get_publisher().substitutions.feed(formdata)
formula = field.prefill.get('value')
variables = get_publisher().substitutions.get_context_variables()
try:
v = str(eval(formula, variables))
@ -482,6 +479,15 @@ class FormPage(Directory):
form.render()
def feed_current_data(self, magictoken):
# create a fake FormData to feed variables
formdata = FormData()
formdata._formdef = self.formdef
formdata.user = get_request().user
formdata.data = get_session().get_by_magictoken(magictoken, {})
formdata.status = str('')
get_publisher().substitutions.feed(formdata)
def _q_index(self, log_detail = None, editing = None):
self.check_role()
if self.formdef.is_disabled():
@ -571,6 +577,9 @@ class FormPage(Directory):
magictoken = form.get_widget('magictoken').parse()
except KeyError:
magictoken = randbytes(8)
self.feed_current_data(magictoken)
form = self.formdef.create_form(page_no)
form.add_submit('previous')
if self.formdef.allow_drafts:
@ -662,6 +671,7 @@ class FormPage(Directory):
if step == 2:
form.add_submit('previous')
magictoken = form.get_widget('magictoken').parse()
self.feed_current_data(magictoken)
form_data = session.get_by_magictoken(magictoken, {})
signature = None