From a400a196a531e0e238c51fac55eda164ab2b68b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 28 May 2018 15:33:54 +0200 Subject: [PATCH] forms: add an option to have items field shown in default criterias (#23369) --- tests/test_backoffice_pages.py | 12 ++++++++++++ wcs/backoffice/management.py | 2 +- wcs/fields.py | 5 ++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index 044c2163..2ba7c9c0 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -594,6 +594,18 @@ def test_backoffice_default_filter(pub): resp = app.get('/backoffice/management/form-title/') assert 'filter-2-value' in resp.form.fields + # same check for items field + formdef.fields.append( + fields.ItemsField(id='4', label='4th field', type='items', items=['foo', 'bar', 'baz'])) + formdef.store() + resp = app.get('/backoffice/management/form-title/') + assert not 'filter-4-value' in resp.form.fields + + formdef.fields[-1].in_filters = True + formdef.store() + resp = app.get('/backoffice/management/form-title/') + assert 'filter-4-value' in resp.form.fields + def test_backoffice_bool_filter(pub): create_superuser(pub) create_environment(pub) diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index cf6e7052..77755eec 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -1027,7 +1027,7 @@ class FormPage(Directory): elif mode == 'stats': # enable period filters by default field.enabled = (field.id in ('start', 'end')) - if field.type == 'item': + if field.type in ('item', 'items'): field.enabled = field.in_filters r += htmltext('

%s (%s)

' % ( diff --git a/wcs/fields.py b/wcs/fields.py index cf3bdce7..f16836ab 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -1295,6 +1295,7 @@ class ItemsField(WidgetField): items = [] max_choices = 0 data_source = {} + in_filters = False display_disabled_items = False widget_class = CheckboxesWidget @@ -1330,6 +1331,8 @@ class ItemsField(WidgetField): def fill_admin_form(self, form): WidgetField.fill_admin_form(self, form) + form.add(CheckboxWidget, 'in_filters', title=_('Display in default filters'), + value=self.in_filters, advanced=True) form.add(WidgetList, 'items', title = _('Items'), element_type = StringWidget, value = self.items, required = False, element_kwargs = {'render_br': False, 'size': 50}, @@ -1350,7 +1353,7 @@ class ItemsField(WidgetField): def get_admin_attributes(self): return WidgetField.get_admin_attributes(self) + ['items', - 'max_choices', 'data_source', 'anonymise', + 'max_choices', 'data_source', 'in_filters', 'anonymise', 'display_disabled_items'] def check_admin_form(self, form): -- 2.17.0