60 |
60 |
class SubmittedDraftException(Exception):
|
61 |
61 |
pass
|
62 |
62 |
|
63 |
63 |
|
64 |
64 |
def html_top(title = None):
|
65 |
65 |
template.html_top(title = title, default_org = _('Forms'))
|
66 |
66 |
|
67 |
67 |
|
68 |
|
def get_user_forms(formdef):
|
|
68 |
def get_user_forms(formdef, user=None):
|
69 |
69 |
"""Return forms data for the current user
|
70 |
70 |
|
71 |
71 |
formdef - the formdef from which we want form datas
|
72 |
72 |
|
73 |
73 |
"""
|
74 |
|
session = get_session()
|
75 |
|
user = session.get_user()
|
|
74 |
if not user:
|
|
75 |
session = get_session()
|
|
76 |
user = session.get_user()
|
76 |
77 |
user_forms = []
|
77 |
78 |
if user and not user.anonymous:
|
78 |
79 |
user_forms = formdef.data_class().get_with_indexed_value('user_id', user.id)
|
79 |
80 |
return list(user_forms)
|
80 |
81 |
|
81 |
82 |
from wcs.forms.common import FormStatusPage
|
82 |
83 |
|
83 |
84 |
|
... | ... | |
690 |
691 |
# on the initial visit editing the form (i.e. not after
|
691 |
692 |
# clicking for previous or next page), we need to load the
|
692 |
693 |
# existing data into the session
|
693 |
694 |
self.edited_data.feed_session()
|
694 |
695 |
token = randbytes(8)
|
695 |
696 |
get_request().form['magictoken'] = token
|
696 |
697 |
session.add_magictoken(token, self.edited_data.data)
|
697 |
698 |
elif self.formdef.only_allow_one:
|
698 |
|
user_forms = get_user_forms(self.formdef)
|
|
699 |
user = None
|
|
700 |
if get_request().is_in_backoffice():
|
|
701 |
# on backoffice submission, retrieve form user from draft formdata
|
|
702 |
if 'mt' in get_request().form:
|
|
703 |
magictoken = get_request().form['mt']
|
|
704 |
elif 'magictoken' in get_request().form:
|
|
705 |
magictoken = get_request().form['magictoken']
|
|
706 |
data = session.get_by_magictoken(magictoken, {})
|
|
707 |
if data:
|
|
708 |
formdata = self.formdef.data_class().get(data['draft_formdata_id'])
|
|
709 |
user = formdata.user
|
|
710 |
user_forms = get_user_forms(self.formdef, user)
|
699 |
711 |
if [x for x in user_forms if not x.is_draft()]:
|
700 |
712 |
return redirect('%s/' % user_forms[0].id)
|
701 |
713 |
|
702 |
714 |
get_response().add_javascript(['jquery.js', 'qommon.forms.js'])
|
703 |
715 |
form = Form()
|
704 |
716 |
form.add_hidden('step', '-1')
|
705 |
717 |
form.add_hidden('page', '-1')
|
706 |
718 |
form.add_hidden('magictoken', '-1')
|
707 |
|
-
|