From b74e85a03cd3e233aed7f68229463ee80cfc133c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 30 Nov 2015 20:24:55 +0100 Subject: [PATCH] backoffice: apply selected criterias to csv/ods/xls exports (#9160) --- tests/test_backoffice_pages.py | 33 +++++++++++++++++++++++++++++++-- wcs/backoffice/management.py | 12 +++++++++--- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index 34611ad..829fbac 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -302,8 +302,37 @@ def test_backoffice_csv(pub): resp = app.get('/backoffice/management/form-title/') resp.forms[0]['filter'] = 'all' resp = resp.forms[0].submit() - resp = resp.click('Export as CSV File') - assert len(resp.body.splitlines()) == 51 + resp_csv = resp.click('Export as CSV File') + assert len(resp_csv.body.splitlines()) == 51 + + # test status filter + resp.forms[0]['filter'] = 'pending' + resp.forms[0]['filter-2'].checked = True + resp = resp.forms[0].submit() + resp.forms[0]['filter-2-value'] = 'baz' + resp = resp.forms[0].submit() + resp_csv = resp.click('Export as CSV File') + assert len(resp_csv.body.splitlines()) == 9 + + # test criteria filters + resp.forms[0]['filter-start'].checked = True + resp = resp.forms[0].submit() + resp.forms[0]['filter-start-value'] = datetime.datetime(2015, 2, 1).strftime('%Y-%m-%d') + resp = resp.forms[0].submit() + resp_csv = resp.click('Export as CSV File') + assert len(resp_csv.body.splitlines()) == 1 + + resp.forms[0]['filter-start-value'] = datetime.datetime(2014, 2, 1).strftime('%Y-%m-%d') + resp = resp.forms[0].submit() + resp_csv = resp.click('Export as CSV File') + assert len(resp_csv.body.splitlines()) == 9 + assert 'Time' in resp_csv.body.splitlines()[0] + + # test column selection + resp.form['time'].checked = False + resp = resp.forms[0].submit() + resp_csv = resp.click('Export as CSV File') + assert 'Time' not in resp_csv.body.splitlines()[0] def test_backoffice_ods(pub): create_superuser(pub) diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index 44e0669..9646418 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -1108,6 +1108,7 @@ class FormPage(Directory): selected_filter = self.get_filter_from_query() user = get_request().user query = get_request().form.get('q') + criterias = self.get_criterias_from_query() class Exporter(object): def __init__(self, formpage, formdef, fields, selected_filter): @@ -1123,7 +1124,8 @@ class FormPage(Directory): csv_output.writerow(self.formpage.csv_tuple_heading(self.fields)) items, total_count = FormDefUI(self.formdef).get_listing_items( - self.selected_filter, user=user, query=query) + self.selected_filter, user=user, query=query, + criterias=criterias) for filled in items: csv_output.writerow(self.formpage.csv_tuple(self.fields, filled)) @@ -1206,6 +1208,7 @@ class FormPage(Directory): selected_filter = self.get_filter_from_query() user = get_request().user query = get_request().form.get('q') + criterias = self.get_criterias_from_query() class Exporter(object): def __init__(self, formpage, formdef, fields, selected_filter): @@ -1222,7 +1225,8 @@ class FormPage(Directory): ws.write(0, i, f) items, total_count = FormDefUI(self.formdef).get_listing_items( - self.selected_filter, user=user, query=query) + self.selected_filter, user=user, query=query, + criterias=criterias) for i, filled in enumerate(items): for j, elem in enumerate(self.formpage.csv_tuple(fields, filled)): @@ -1265,6 +1269,7 @@ class FormPage(Directory): selected_filter = self.get_filter_from_query() user = get_request().user query = get_request().form.get('q') + criterias = self.get_criterias_from_query() class Exporter(object): def __init__(self, formpage, formdef, fields, selected_filter): @@ -1281,7 +1286,8 @@ class FormPage(Directory): ws.write(0, i, f) items, total_count = FormDefUI(self.formdef).get_listing_items( - self.selected_filter, user=user, query=query) + self.selected_filter, user=user, query=query, + criterias=criterias) for i, filled in enumerate(items): for j, elem in enumerate(self.formpage.csv_tuple(fields, filled, hint='ods')): -- 2.6.2