From 9edf9c3507f839f4ebe39947399c6cea733e29fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 17 Feb 2016 19:58:19 +0100 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(-) diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index 50c2553..d68edb8 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -119,6 +119,11 @@ def create_environment(pub, set_receiver=True): formdata.jump_status('finished') formdata.store() + formdata = formdef.data_class()() + formdata.data = {'1': 'XXX', '2': 'foo', '2_display': 'foo'} + formdata.status = 'draft' + formdata.store() + formdef = FormDef() if set_receiver: formdef.workflow_roles = {'_receiver': 1} @@ -1354,7 +1359,7 @@ def test_tracking_code_access(pub): formdef = FormDef.get_by_urlname('form-title') formdef.enable_tracking_codes = True formdef.store() - formdata, formdata2 = formdef.data_class().select()[:2] + formdata, formdata2 = formdef.data_class().select(order_by='id')[:2] code = pub.tracking_code_class() code.formdata = formdata diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index 244df17..5571a8b 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -1411,6 +1411,10 @@ class FormPage(Directory): applied_filters = ['wf-%s' % selected_filter] criterias.append(Or([Equal('status', x) for x in applied_filters])) criterias[-1]._label = criteria_label + displayed_criterias = criterias + else: + displayed_criterias = criterias + criterias = [NotEqual('status', 'draft')] + displayed_criterias values = self.formdef.data_class().select(criterias) if get_publisher().is_using_postgresql(): @@ -1419,11 +1423,11 @@ class FormPage(Directory): self.formdef.data_class().load_all_evolutions(values) r += htmltext('
') - if criterias: + if displayed_criterias: r += htmltext('
') r += htmltext('

%s

') % _('Filters') r += htmltext('
    ') - for criteria in criterias: + for criteria in displayed_criterias: criteria_label = getattr(criteria, '_label', None) if criteria_label: r += htmltext('
  • %s
  • ') % criteria_label @@ -1444,7 +1448,7 @@ class FormPage(Directory): r += htmltext('
') excluded_fields = [] - for criteria in criterias: + for criteria in displayed_criterias: if not isinstance(criteria, Equal): continue excluded_fields.append(criteria.attribute[1:]) diff --git a/wcs/forms/backoffice.py b/wcs/forms/backoffice.py index d1d5d46..c95e877 100644 --- a/wcs/forms/backoffice.py +++ b/wcs/forms/backoffice.py @@ -135,6 +135,8 @@ class FormDefUI(object): formdata_class = self.formdef.data_class() if selected_filter == 'all': item_ids = formdata_class.keys() + drafts = formdata_class.get_ids_with_indexed_value('status', 'draft') + item_ids = [x for x in item_ids if x not in drafts] else: applied_filters = [] if selected_filter == 'pending': @@ -205,8 +207,6 @@ class FormDefUI(object): url_action = '' root_url = get_publisher().get_root_url() for i, filled in enumerate(items): - if filled.is_draft(): # skipping drafts - continue if i%2: style = 'even' else: -- 2.7.0