Projet

Général

Profil

0001-backoffice-extend-global-status-filter-to-waiting-op.patch

Frédéric Péters, 04 mars 2017 18:10

Télécharger (4,08 ko)

Voir les différences:

Subject: [PATCH] backoffice: extend global status filter to
 waiting/open/done/all (#15003)

 tests/test_backoffice_pages.py | 14 ++++++++++++++
 wcs/backoffice/management.py   | 24 +++++++++++++++++++-----
 2 files changed, 33 insertions(+), 5 deletions(-)
tests/test_backoffice_pages.py
2166 2166
    resp = resp.forms['listing-settings'].submit()
2167 2167
    assert resp.body[resp.body.index('<tbody'):].count('<tr') == 17
2168 2168

  
2169
    resp = app.get('/backoffice/management/listing?limit=500')
2170
    resp.forms['listing-settings']['status'] = 'waiting'
2171
    resp = resp.forms['listing-settings'].submit()
2172
    assert resp.body[resp.body.index('<tbody'):].count('<tr') == 37
2173
    resp.forms['listing-settings']['status'] = 'open'
2174
    resp = resp.forms['listing-settings'].submit()
2175
    assert resp.body[resp.body.index('<tbody'):].count('<tr') == 37
2176
    resp.forms['listing-settings']['status'] = 'all'
2177
    resp = resp.forms['listing-settings'].submit()
2178
    assert resp.body[resp.body.index('<tbody'):].count('<tr') == 70
2179
    resp.forms['listing-settings']['status'] = 'done'
2180
    resp = resp.forms['listing-settings'].submit()
2181
    assert resp.body[resp.body.index('<tbody'):].count('<tr') == 33
2182

  
2169 2183
def test_global_listing_with_no_formdefs(pub):
2170 2184
    if not pub.is_using_postgresql():
2171 2185
        pytest.skip('this requires SQL')
wcs/backoffice/management.py
523 523
        get_response().add_javascript(['jquery.js'])
524 524
        DateWidget.prepare_javascript()
525 525
        form = Form(use_tokens=False, id='listing-settings')
526
        form.add(CheckboxWidget, 'waiting', title=_('Waiting for an action'),
527
                value=True)
526
        form.add(SingleSelectWidget, 'status', title=_('Status'),
527
                options=[
528
                    ('waiting', _('Waiting for an action'), 'waiting'),
529
                    ('open', C_('formdata|Open'), 'open'),
530
                    ('done', _('Done'), 'done'),
531
                    ('all', _('All'), 'all')])
528 532
        form.add(DateWidget, 'start', title=_('Start Date'))
529 533
        form.add(DateWidget, 'end', title=_('End Date'))
530 534

  
......
702 706
        parsed_values = {}
703 707
        user_roles = [logged_users_role().id] + (get_request().user.roles or [])
704 708
        criterias = get_global_criteria(get_request(), parsed_values)
705
        criterias.append(Equal('is_at_endpoint', False))
706 709
        query_parameters = (get_request().form or {}).copy()
707 710
        query_parameters.pop('callback', None) # when using jsonp
708
        if not query_parameters or get_request().form.get('waiting') == 'yes':
711
        status = query_parameters.get('status', 'waiting')
712
        if query_parameters.get('waiting') == 'yes':
713
            # compatibility with ?waiting=yes|no parameter, still used in
714
            # the /count endpoint used for indicators
715
            status = 'waiting'
716
        elif query_parameters.get('waiting') == 'no':
717
            status = 'open'
718
        if status == 'waiting':
719
            criterias.append(Equal('is_at_endpoint', False))
709 720
            criterias.append(Intersects('actions_roles_array', user_roles))
710
        else:
721
        elif status == 'open':
722
            criterias.append(Equal('is_at_endpoint', False))
711 723
            criterias.append(Intersects('concerned_roles_array', user_roles))
724
        elif status == 'done':
725
            criterias.append(Equal('is_at_endpoint', True))
712 726
        if get_request().form.get('submission_channel'):
713 727
            if get_request().form.get('submission_channel') == 'web':
714 728
                criterias.append(Null('submission_channel'))
715
-