Projet

Général

Profil

0001-forms-add-an-option-to-have-items-field-shown-in-def.patch

Frédéric Péters, 28 mai 2018 15:34

Télécharger (3,18 ko)

Voir les différences:

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(-)
tests/test_backoffice_pages.py
594 594
    resp = app.get('/backoffice/management/form-title/')
595 595
    assert 'filter-2-value' in resp.form.fields
596 596

  
597
    # same check for items field
598
    formdef.fields.append(
599
            fields.ItemsField(id='4', label='4th field', type='items', items=['foo', 'bar', 'baz']))
600
    formdef.store()
601
    resp = app.get('/backoffice/management/form-title/')
602
    assert not 'filter-4-value' in resp.form.fields
603

  
604
    formdef.fields[-1].in_filters = True
605
    formdef.store()
606
    resp = app.get('/backoffice/management/form-title/')
607
    assert 'filter-4-value' in resp.form.fields
608

  
597 609
def test_backoffice_bool_filter(pub):
598 610
    create_superuser(pub)
599 611
    create_environment(pub)
wcs/backoffice/management.py
1027 1027
                elif mode == 'stats':
1028 1028
                    # enable period filters by default
1029 1029
                    field.enabled = (field.id in ('start', 'end'))
1030
                if field.type == 'item':
1030
                if field.type in ('item', 'items'):
1031 1031
                    field.enabled = field.in_filters
1032 1032

  
1033 1033
        r += htmltext('<h3><span>%s</span> <span class="change">(<a id="filter-settings">%s</a>)</span></h3>' % (
wcs/fields.py
1295 1295
    items = []
1296 1296
    max_choices = 0
1297 1297
    data_source = {}
1298
    in_filters = False
1298 1299
    display_disabled_items = False
1299 1300

  
1300 1301
    widget_class = CheckboxesWidget
......
1330 1331

  
1331 1332
    def fill_admin_form(self, form):
1332 1333
        WidgetField.fill_admin_form(self, form)
1334
        form.add(CheckboxWidget, 'in_filters', title=_('Display in default filters'),
1335
                value=self.in_filters, advanced=True)
1333 1336
        form.add(WidgetList, 'items', title = _('Items'), element_type = StringWidget,
1334 1337
                value = self.items, required = False,
1335 1338
                element_kwargs = {'render_br': False, 'size': 50},
......
1350 1353

  
1351 1354
    def get_admin_attributes(self):
1352 1355
        return WidgetField.get_admin_attributes(self) + ['items',
1353
                'max_choices', 'data_source', 'anonymise',
1356
                'max_choices', 'data_source', 'in_filters', 'anonymise',
1354 1357
                'display_disabled_items']
1355 1358

  
1356 1359
    def check_admin_form(self, form):
1357
-