Projet

Général

Profil

0001-backoffice-always-exclude-drafts-from-exports-and-st.patch

Frédéric Péters, 17 février 2016 19:59

Télécharger (3,93 ko)

Voir les différences:

Subject: [PATCH] backoffice: always exclude drafts from exports and statistics
 (#10012)

 tests/test_backoffice_pages.py |  7 ++++++-
 wcs/backoffice/management.py   | 10 +++++++---
 wcs/forms/backoffice.py        |  4 ++--
 3 files changed, 15 insertions(+), 6 deletions(-)
tests/test_backoffice_pages.py
119 119
            formdata.jump_status('finished')
120 120
        formdata.store()
121 121

  
122
    formdata = formdef.data_class()()
123
    formdata.data = {'1': 'XXX', '2': 'foo', '2_display': 'foo'}
124
    formdata.status = 'draft'
125
    formdata.store()
126

  
122 127
    formdef = FormDef()
123 128
    if set_receiver:
124 129
        formdef.workflow_roles = {'_receiver': 1}
......
1354 1359
    formdef = FormDef.get_by_urlname('form-title')
1355 1360
    formdef.enable_tracking_codes = True
1356 1361
    formdef.store()
1357
    formdata, formdata2 = formdef.data_class().select()[:2]
1362
    formdata, formdata2 = formdef.data_class().select(order_by='id')[:2]
1358 1363
    code = pub.tracking_code_class()
1359 1364
    code.formdata = formdata
1360 1365

  
wcs/backoffice/management.py
1411 1411
                applied_filters = ['wf-%s' % selected_filter]
1412 1412
            criterias.append(Or([Equal('status', x) for x in applied_filters]))
1413 1413
            criterias[-1]._label = criteria_label
1414
            displayed_criterias = criterias
1415
        else:
1416
            displayed_criterias = criterias
1417
            criterias = [NotEqual('status', 'draft')] + displayed_criterias
1414 1418

  
1415 1419
        values = self.formdef.data_class().select(criterias)
1416 1420
        if get_publisher().is_using_postgresql():
......
1419 1423
            self.formdef.data_class().load_all_evolutions(values)
1420 1424

  
1421 1425
        r += htmltext('<div id="statistics">')
1422
        if criterias:
1426
        if displayed_criterias:
1423 1427
            r += htmltext('<div class="criterias bo-block">')
1424 1428
            r += htmltext('<h2>%s</h2>') % _('Filters')
1425 1429
            r += htmltext('<ul>')
1426
            for criteria in criterias:
1430
            for criteria in displayed_criterias:
1427 1431
                criteria_label = getattr(criteria, '_label', None)
1428 1432
                if criteria_label:
1429 1433
                    r += htmltext('<li>%s</li>') % criteria_label
......
1444 1448
        r += htmltext('</div>')
1445 1449

  
1446 1450
        excluded_fields = []
1447
        for criteria in criterias:
1451
        for criteria in displayed_criterias:
1448 1452
            if not isinstance(criteria, Equal):
1449 1453
                continue
1450 1454
            excluded_fields.append(criteria.attribute[1:])
wcs/forms/backoffice.py
135 135
        formdata_class = self.formdef.data_class()
136 136
        if selected_filter == 'all':
137 137
            item_ids = formdata_class.keys()
138
            drafts = formdata_class.get_ids_with_indexed_value('status', 'draft')
139
            item_ids = [x for x in item_ids if x not in drafts]
138 140
        else:
139 141
            applied_filters = []
140 142
            if selected_filter == 'pending':
......
205 207
            url_action = ''
206 208
        root_url = get_publisher().get_root_url()
207 209
        for i, filled in enumerate(items):
208
            if filled.is_draft(): # skipping drafts
209
                continue
210 210
            if i%2:
211 211
                style = 'even'
212 212
            else:
213
-