Projet

Général

Profil

0001-fold-summary-if-form-has-already-been-seen-9175.patch

Thomas Noël, 06 février 2016 01:54

Télécharger (3,54 ko)

Voir les différences:

Subject: [PATCH] fold summary if form has already been seen (#9175)

 tests/test_backoffice_pages.py | 24 ++++++++++++++++++++++++
 wcs/forms/common.py            | 23 +++++++++++++++++------
 2 files changed, 41 insertions(+), 6 deletions(-)
tests/test_backoffice_pages.py
1666 1666
    resp = resp.follow()
1667 1667
    assert sms_mocking.sms[-1]['destinations'] == ['0123456789']
1668 1668
    assert form_class.get(number31.id).tracking_code in sms_mocking.sms[-1]['text']
1669

  
1670
def test_backoffice_resume_folded(pub):
1671
    user = create_user(pub)
1672
    create_environment(pub)
1673
    form_class = FormDef.get_by_urlname('form-title').data_class()
1674
    number31 = [x for x in form_class.select() if x.data['1'] == 'FOO BAR 30'][0]
1675
    app = login(get_app(pub))
1676

  
1677
    # formdata is mine : fold
1678
    number31.user_id = user.id
1679
    number31.store()
1680
    resp = app.get('/backoffice/management/form-title/%s/' % number31.id)
1681
    assert '<h2 class="foldable folded">Summary</h2>'  in resp.body
1682

  
1683
    # formdata is not mine : don't fold
1684
    number31.user_id = None
1685
    number31.store()
1686
    resp = app.get('/backoffice/management/form-title/%s/' % number31.id)
1687
    assert '<h2 class="foldable">Summary</h2>' in resp.body
1688

  
1689
    # do something on this formdata : fold
1690
    resp = resp.form.submit('button_commentable')
1691
    resp = resp.follow()
1692
    assert '<h2 class="foldable folded">Summary</h2>' in resp.body
wcs/forms/common.py
347 347
            raise errors.AccessForbiddenError()
348 348
        return user
349 349

  
350
    def receipt(self,
351
            always_include_user = False,
352
            show_status = True,
353
            form_url = ''):
350
    def receipt(self, always_include_user=False, show_status=True, form_url='', folded=False):
354 351
        user = get_request().user
355 352
        if not always_include_user and get_request().user and \
356 353
                get_request().user.id == self.filled.user_id:
......
372 369

  
373 370
        r = TemplateIO(html=True)
374 371
        r += htmltext('<div class="bo-block" id="summary">')
375
        r += htmltext('<h2 class="foldable">%s</h2>') % _('Summary')
372
        klasses = 'foldable'
373
        if folded:
374
            klasses += ' folded'
375
        r += htmltext('<h2 class="%s">' % klasses)
376
        r += htmltext('%s</h2>') % _('Summary')
376 377
        r += htmltext('<div class="dataview">')
377 378

  
378 379
        if user:
......
494 495

  
495 496
        r += htmltext(self.workflow_messages())
496 497

  
497
        r += self.receipt(always_include_user = True)
498
        # fold the summary if the form has already been seen by the user, i.e. if the user is
499
        # present in the formdata log (evolution).
500
        folded = False
501
        if user and self.filled.evolution:
502
            for evo in self.filled.evolution:
503
                if (str(evo.who) == str(user.id) or
504
                        (evo.who == '_submitter' and self.filled.is_submitter(user))):
505
                    folded = True
506
                    break
507

  
508
        r += self.receipt(always_include_user=True, folded=folded)
498 509

  
499 510
        r += self.history()
500 511

  
501
-