This commit is contained in:
parent
d7dc42fd48
commit
96b9503832
|
@ -10550,3 +10550,41 @@ def test_form_html_titles(pub):
|
|||
assert resp.pyquery('title').text() == 'test - 2/3 - 2nd page'
|
||||
resp = resp.forms[0].submit('submit') # -> validation
|
||||
assert resp.pyquery('title').text() == 'test - 3/3 - Validating'
|
||||
|
||||
|
||||
def test_only_one_check(pub):
|
||||
create_user(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [fields.StringField(id='1', label='1st field', type='string')]
|
||||
formdef.only_allow_one = True
|
||||
formdef.store()
|
||||
|
||||
formdef.data_class().wipe()
|
||||
|
||||
for i in range(5):
|
||||
resp = get_app(pub).get('/form-title/')
|
||||
resp.form['f1'] = 'test'
|
||||
resp = resp.form.submit('submit') # -> validation
|
||||
resp = resp.form.submit('submit') # -> submit
|
||||
assert formdef.data_class().count() == (i + 1)
|
||||
|
||||
app = login(get_app(pub), username='foo', password='foo')
|
||||
resp = app.get('/form-title/')
|
||||
resp.form['f1'] = 'test2'
|
||||
resp = resp.form.submit('submit') # -> validation
|
||||
# draft has been saved
|
||||
assert len([x for x in formdef.data_class().select() if x.is_draft()]) == 1
|
||||
|
||||
# the draft doesn't prevent a new form being completed
|
||||
resp = app.get('/form-title/')
|
||||
resp.form['f1'] = 'test2'
|
||||
resp = resp.form.submit('submit') # -> validation
|
||||
resp = resp.form.submit('submit') # -> submit
|
||||
|
||||
# when there's a form, redirect to it
|
||||
resp = app.get('/form-title/')
|
||||
resp = resp.follow()
|
||||
assert '>test2<' in resp.text
|
||||
|
|
|
@ -67,20 +67,6 @@ def html_top(title=None, page_title=None):
|
|||
template.html_top(title=title, default_org=_('Forms'), page_title=page_title)
|
||||
|
||||
|
||||
def get_user_forms(formdef):
|
||||
"""Return forms data for the current user
|
||||
|
||||
formdef - the formdef from which we want form datas
|
||||
|
||||
"""
|
||||
session = get_session()
|
||||
user = session.get_user()
|
||||
user_forms = []
|
||||
if user and not user.anonymous:
|
||||
user_forms = formdef.data_class().get_with_indexed_value('user_id', user.id)
|
||||
return list(user_forms)
|
||||
|
||||
|
||||
def tryauth(url):
|
||||
# tries to log the user in before redirecting to the asked url; this won't
|
||||
# do anything for local logins but will use a passive SAML request when
|
||||
|
@ -992,10 +978,13 @@ class FormPage(FormdefDirectoryBase, FormTemplateMixin):
|
|||
return None
|
||||
if not self.formdef.only_allow_one:
|
||||
return None
|
||||
for user_form in get_user_forms(self.formdef):
|
||||
if not user_form.is_draft():
|
||||
return user_form.id
|
||||
return None
|
||||
user = get_session().get_user()
|
||||
if not user:
|
||||
return None
|
||||
user_forms = self.formdef.data_class().select(
|
||||
[Equal('user_id', str(user.id)), NotEqual('status', 'draft')]
|
||||
)
|
||||
return user_forms[0].id if user_forms else None
|
||||
|
||||
_pages = None
|
||||
|
||||
|
|
Loading…
Reference in New Issue