Projet

Général

Profil

0003-backoffice-use-order_by-param-in-exports-47629.patch

Lauréline Guérin, 23 octobre 2020 16:28

Télécharger (4,85 ko)

Voir les différences:

Subject: [PATCH 3/3] backoffice: use order_by param in exports (#47629)

 tests/backoffice_pages/test_export.py | 38 +++++++++++++++++++++++++++
 wcs/backoffice/management.py          |  9 ++++---
 2 files changed, 44 insertions(+), 3 deletions(-)
tests/backoffice_pages/test_export.py
334 334
    assert resp_csv.text.splitlines()[1].split(',')[-3:] == ['XfooY', 'Xfoo2Y', '']
335 335

  
336 336

  
337
def test_backoffice_csv_export_ordering(pub):
338
    if not pub.is_using_postgresql():
339
        pytest.skip('this requires SQL')
340
        return
341

  
342
    create_superuser(pub)
343

  
344
    FormDef.wipe()
345
    formdef = FormDef()
346
    formdef.name = 'form title'
347
    formdef.fields = [
348
        fields.ItemField(
349
            id='1', label='field 1', type='item',
350
            items=['foo', 'bar', 'baz'],
351
            display_locations=['validation', 'summary', 'listings']),
352
    ]
353
    formdef.workflow_roles = {'_receiver': 1}
354
    formdef.store()
355

  
356
    formdef.data_class().wipe()
357
    formdata = formdef.data_class()()
358
    formdata.data = {'1': 'foo', '1_display': 'foo'}
359
    formdata.jump_status('new')
360
    formdata.store()
361
    formdata = formdef.data_class()()
362
    formdata.data = {'1': 'bar', '1_display': 'bar'}
363
    formdata.jump_status('new')
364
    formdata.store()
365

  
366
    app = login(get_app(pub))
367
    resp_csv = app.get('/backoffice/management/form-title/csv')
368
    assert resp_csv.text.splitlines()[1].split(',')[-3:] == ['-', 'bar', 'New']
369
    assert resp_csv.text.splitlines()[2].split(',')[-3:] == ['-', 'foo', 'New']
370
    resp_csv = app.get('/backoffice/management/form-title/csv?order_by=id')
371
    assert resp_csv.text.splitlines()[1].split(',')[-3:] == ['-', 'foo', 'New']
372
    assert resp_csv.text.splitlines()[2].split(',')[-3:] == ['-', 'bar', 'New']
373

  
374

  
337 375
def test_backoffice_ods(pub):
338 376
    create_superuser(pub)
339 377

  
wcs/backoffice/management.py
2033 2033
        user = get_request().user
2034 2034
        query = get_request().form.get('q')
2035 2035
        criterias = self.get_criterias_from_query()
2036
        order_by = misc.get_order_by_or_400(get_request().form.get('order_by', None))
2036 2037

  
2037 2038
        class Exporter(object):
2038 2039
            def __init__(self, formpage, formdef, fields, selected_filter):
......
2049 2050

  
2050 2051
                items, total_count = FormDefUI(self.formdef).get_listing_items(
2051 2052
                        fields, self.selected_filter, user=user, query=query,
2052
                        criterias=criterias)
2053
                        criterias=criterias, order_by=order_by)
2053 2054

  
2054 2055
                for filled in items:
2055 2056
                    csv_output.writerow(tuple(
......
2134 2135
        user = get_request().user
2135 2136
        query = get_request().form.get('q')
2136 2137
        criterias = self.get_criterias_from_query()
2138
        order_by = misc.get_order_by_or_400(get_request().form.get('order_by', None))
2137 2139

  
2138 2140
        class Exporter(object):
2139 2141
            def __init__(self, formpage, formdef, fields, selected_filter):
......
2151 2153

  
2152 2154
                items, total_count = FormDefUI(self.formdef).get_listing_items(
2153 2155
                        fields, self.selected_filter, user=user, query=query,
2154
                        criterias=criterias)
2156
                        criterias=criterias, order_by=order_by)
2155 2157

  
2156 2158
                for i, filled in enumerate(items):
2157 2159
                    for j, item in enumerate(self.formpage.get_spreadsheet_line(fields, filled)):
......
2199 2201
        user = get_user_from_api_query_string() or get_request().user
2200 2202
        query = get_request().form.get('q')
2201 2203
        criterias = self.get_criterias_from_query()
2204
        order_by = misc.get_order_by_or_400(get_request().form.get('order_by', None))
2202 2205

  
2203 2206
        class Exporter(object):
2204 2207
            def __init__(self, formpage, formdef, fields, selected_filter):
......
2216 2219

  
2217 2220
                items, total_count = FormDefUI(self.formdef).get_listing_items(
2218 2221
                        fields, self.selected_filter, user=user, query=query,
2219
                        criterias=criterias)
2222
                        criterias=criterias, order_by=order_by)
2220 2223

  
2221 2224
                for i, formdata in enumerate(items):
2222 2225
                    for j, item in enumerate(self.formpage.get_spreadsheet_line(fields, formdata)):
2223
-