Projet

Général

Profil

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

Lauréline Guérin, 15 octobre 2020 17:06

Télécharger (4,85 ko)

Voir les différences:

Subject: [PATCH 4/4] 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
327 327
    assert resp_csv.text.splitlines()[1].split(',')[-3:] == ['XfooY', 'Xfoo2Y', '']
328 328

  
329 329

  
330
def test_backoffice_csv_export_ordering(pub):
331
    if not pub.is_using_postgresql():
332
        pytest.skip('this requires SQL')
333
        return
334

  
335
    create_superuser(pub)
336

  
337
    FormDef.wipe()
338
    formdef = FormDef()
339
    formdef.name = 'form title'
340
    formdef.fields = [
341
        fields.ItemField(
342
            id='1', label='field 1', type='item',
343
            items=['foo', 'bar', 'baz'],
344
            display_locations=['validation', 'summary', 'listings']),
345
    ]
346
    formdef.workflow_roles = {'_receiver': 1}
347
    formdef.store()
348

  
349
    formdef.data_class().wipe()
350
    formdata = formdef.data_class()()
351
    formdata.data = {'1': 'foo', '1_display': 'foo'}
352
    formdata.jump_status('new')
353
    formdata.store()
354
    formdata = formdef.data_class()()
355
    formdata.data = {'1': 'bar', '1_display': 'bar'}
356
    formdata.jump_status('new')
357
    formdata.store()
358

  
359
    app = login(get_app(pub))
360
    resp_csv = app.get('/backoffice/management/form-title/csv')
361
    assert resp_csv.text.splitlines()[1].split(',')[-3:] == ['-', 'bar', 'New']
362
    assert resp_csv.text.splitlines()[2].split(',')[-3:] == ['-', 'foo', 'New']
363
    resp_csv = app.get('/backoffice/management/form-title/csv?order_by=id')
364
    assert resp_csv.text.splitlines()[1].split(',')[-3:] == ['-', 'foo', 'New']
365
    assert resp_csv.text.splitlines()[2].split(',')[-3:] == ['-', 'bar', 'New']
366

  
367

  
330 368
def test_backoffice_ods(pub):
331 369
    create_superuser(pub)
332 370

  
wcs/backoffice/management.py
1963 1963
        user = get_request().user
1964 1964
        query = get_request().form.get('q')
1965 1965
        criterias = self.get_criterias_from_query()
1966
        order_by = misc.get_order_by_or_400(get_request().form.get('order_by', None))
1966 1967

  
1967 1968
        class Exporter(object):
1968 1969
            def __init__(self, formpage, formdef, fields, selected_filter):
......
1979 1980

  
1980 1981
                items, total_count = FormDefUI(self.formdef).get_listing_items(
1981 1982
                        fields, self.selected_filter, user=user, query=query,
1982
                        criterias=criterias)
1983
                        criterias=criterias, order_by=order_by)
1983 1984

  
1984 1985
                for filled in items:
1985 1986
                    csv_output.writerow(tuple(
......
2064 2065
        user = get_request().user
2065 2066
        query = get_request().form.get('q')
2066 2067
        criterias = self.get_criterias_from_query()
2068
        order_by = misc.get_order_by_or_400(get_request().form.get('order_by', None))
2067 2069

  
2068 2070
        class Exporter(object):
2069 2071
            def __init__(self, formpage, formdef, fields, selected_filter):
......
2081 2083

  
2082 2084
                items, total_count = FormDefUI(self.formdef).get_listing_items(
2083 2085
                        fields, self.selected_filter, user=user, query=query,
2084
                        criterias=criterias)
2086
                        criterias=criterias, order_by=order_by)
2085 2087

  
2086 2088
                for i, filled in enumerate(items):
2087 2089
                    for j, item in enumerate(self.formpage.get_spreadsheet_line(fields, filled)):
......
2129 2131
        user = get_user_from_api_query_string() or get_request().user
2130 2132
        query = get_request().form.get('q')
2131 2133
        criterias = self.get_criterias_from_query()
2134
        order_by = misc.get_order_by_or_400(get_request().form.get('order_by', None))
2132 2135

  
2133 2136
        class Exporter(object):
2134 2137
            def __init__(self, formpage, formdef, fields, selected_filter):
......
2146 2149

  
2147 2150
                items, total_count = FormDefUI(self.formdef).get_listing_items(
2148 2151
                        fields, self.selected_filter, user=user, query=query,
2149
                        criterias=criterias)
2152
                        criterias=criterias, order_by=order_by)
2150 2153

  
2151 2154
                for i, formdata in enumerate(items):
2152 2155
                    for j, item in enumerate(self.formpage.get_spreadsheet_line(fields, formdata)):
2153
-