fold summary if form has already been seen (#9175)

This commit is contained in:
Thomas NOËL 2016-01-23 00:20:11 +01:00
parent 3c0c1ea243
commit a96492fae7
2 changed files with 32 additions and 6 deletions

View File

@ -1666,3 +1666,18 @@ def test_360_user_view_tracking_code(pub):
resp = resp.follow()
assert sms_mocking.sms[-1]['destinations'] == ['0123456789']
assert form_class.get(number31.id).tracking_code in sms_mocking.sms[-1]['text']
def test_backoffice_resume_folded(pub):
user = create_user(pub)
create_environment(pub)
form_class = FormDef.get_by_urlname('form-title').data_class()
number31 = [x for x in form_class.select() if x.data['1'] == 'FOO BAR 30'][0]
app = login(get_app(pub))
# first access: summary is not folded
resp = app.get('/backoffice/management/form-title/%s/' % number31.id)
assert '<h2 class="foldable">Summary</h2>' in resp.body
# do something: summary is folded
resp = resp.form.submit('button_commentable')
resp = resp.follow()
assert '<h2 class="foldable folded">Summary</h2>' in resp.body

View File

@ -359,10 +359,7 @@ class FormStatusPage(Directory):
raise errors.AccessForbiddenError()
return user
def receipt(self,
always_include_user = False,
show_status = True,
form_url = ''):
def receipt(self, always_include_user=False, show_status=True, form_url='', folded=False):
user = get_request().user
if not always_include_user and get_request().user and \
get_request().user.id == self.filled.user_id:
@ -384,7 +381,11 @@ class FormStatusPage(Directory):
r = TemplateIO(html=True)
r += htmltext('<div class="bo-block" id="summary">')
r += htmltext('<h2 class="foldable">%s</h2>') % _('Summary')
klasses = 'foldable'
if folded:
klasses += ' folded'
r += htmltext('<h2 class="%s">' % klasses)
r += htmltext('%s</h2>') % _('Summary')
r += htmltext('<div class="dataview">')
if user:
@ -506,7 +507,17 @@ class FormStatusPage(Directory):
r += htmltext(self.workflow_messages())
r += self.receipt(always_include_user = True)
# 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.history()