forms: fold form summary for submitter (#34833)

This commit is contained in:
Frédéric Péters 2019-07-15 10:24:23 +02:00
parent f8da77c8f9
commit e6a9520100
2 changed files with 18 additions and 14 deletions

View File

@ -408,6 +408,7 @@ def test_form_submit(pub):
assert 'The form has been recorded' in next_page.body
assert not 'None' in next_page.body
assert formdef.data_class().count() == 1
assert '<div class="section foldable folded" id="summary">' in next_page.body
def test_form_submit_no_confirmation(pub):
formdef = create_formdef()
@ -1105,6 +1106,7 @@ def test_form_submit_with_user(pub, emails):
next_page = next_page.follow()
assert 'The form has been recorded' in next_page.body
assert formdef.data_class().count() == 1
assert '<div class="section foldable folded" id="summary">' in next_page.body
# check the user received a copy by email
assert emails.emails.get('New form (test)')
assert emails.emails.get('New form (test)')['email_rcpt'] == ['foo@localhost']

View File

@ -316,8 +316,8 @@ class FormStatusPage(Directory, FormTemplateMixin):
raise errors.AccessForbiddenError()
return user
def receipt(self, always_include_user=False, show_status=True, form_url='', folded=False):
user = get_request().user
def receipt(self, always_include_user=False, show_status=True, form_url='', mine=True):
request_user = user = get_request().user
if not always_include_user and get_request().user and \
get_request().user.id == self.filled.user_id:
user = None
@ -338,8 +338,21 @@ class FormStatusPage(Directory, FormTemplateMixin):
r = TemplateIO(html=True)
klasses = 'foldable'
# fold the summary if the form has already been seen by the user, i.e.
# if it's user own form or if the user is present in the formdata log
# (evolution).
folded = False
if mine or (request_user and self.filled.is_submitter(request_user)):
folded = True
elif request_user and self.filled.evolution:
for evo in self.filled.evolution:
if (str(evo.who) == str(request_user.id) or
(evo.who == '_submitter' and self.filled.is_submitter(request_user))):
folded = True
break
if folded:
klasses += ' folded'
r += htmltext('<div class="section %s" id="summary">' % klasses)
r += htmltext('<h2>%s</h2>') % _('Summary')
r += htmltext('<div class="dataview">')
@ -500,18 +513,7 @@ class FormStatusPage(Directory, FormTemplateMixin):
r = TemplateIO(html=True)
r += htmltext(self.workflow_messages())
# fold the summary if the form has already been seen by the user, i.e. if the user is
# present in the formdata log (evolution).
folded = False
if user and self.filled.evolution:
for evo in self.filled.evolution:
if (str(evo.who) == str(user.id) or
(evo.who == '_submitter' and self.filled.is_submitter(user))):
folded = True
break
r += self.receipt(always_include_user=True, folded=folded)
r += self.receipt(always_include_user=True, mine=False)
r += self.backoffice_fields_section()
r += self.history()