0001-backoffice-add-a-new-Include-in-default-filters-opti.patch
tests/test_backoffice_pages.py | ||
---|---|---|
270 | 270 |
resp = resp.forms[0].submit() |
271 | 271 |
assert resp.body.count('<td>baz</td>') == 8 |
272 | 272 | |
273 |
def test_backoffice_default_filter(pub): |
|
274 |
create_superuser(pub) |
|
275 |
create_environment(pub) |
|
276 |
app = login(get_app(pub)) |
|
277 |
resp = app.get('/backoffice/management/form-title/') |
|
278 |
assert not 'filter-2-value' in resp.form.fields |
|
279 | ||
280 |
formdef = FormDef.get_by_urlname('form-title') |
|
281 |
formdef.fields[1].in_filters = True |
|
282 |
formdef.store() |
|
283 |
resp = app.get('/backoffice/management/form-title/') |
|
284 |
assert 'filter-2-value' in resp.form.fields |
|
285 | ||
273 | 286 |
def test_backoffice_csv(pub): |
274 | 287 |
create_superuser(pub) |
275 | 288 |
create_environment(pub) |
... | ... | |
349 | 362 |
app = login(get_app(pub)) |
350 | 363 |
resp = app.get('/backoffice/management/form-title/') |
351 | 364 |
resp = resp.click('Statistics') |
365 |
assert not 'filter-2-value' in resp.form.fields |
|
352 | 366 | |
353 | 367 |
resp.forms[0]['filter-2'].checked = True |
354 | 368 |
resp = resp.forms[0].submit() |
... | ... | |
364 | 378 |
resp = resp.forms[0].submit() |
365 | 379 |
assert 'Total number of records: 13' in resp.body |
366 | 380 | |
381 |
# check it's also possible to get back to the complete list |
|
382 |
resp.forms[0]['filter-2-value'].value = '' |
|
383 |
resp = resp.forms[0].submit() |
|
384 |
assert 'Total number of records: 50' in resp.body |
|
385 | ||
367 | 386 |
# check it also works with item fields with a data source |
368 | 387 |
resp = app.get('/backoffice/management/form-title/') |
369 | 388 |
resp = resp.click('Statistics') |
... | ... | |
373 | 392 |
resp = resp.forms[0].submit() |
374 | 393 |
assert 'Total number of records: 13' in resp.body |
375 | 394 | |
395 |
# set field to be displayed by default in filters |
|
396 |
formdef = FormDef.get_by_urlname('form-title') |
|
397 |
formdef.fields[1].in_filters = True |
|
398 |
formdef.store() |
|
399 |
resp = app.get('/backoffice/management/form-title/') |
|
400 |
resp = resp.click('Statistics') |
|
401 |
assert 'filter-2-value' in resp.form.fields |
|
376 | 402 | |
377 | 403 |
def test_backoffice_handling(pub): |
378 | 404 |
create_user(pub) |
wcs/backoffice/management.py | ||
---|---|---|
465 | 465 |
elif mode == 'stats': |
466 | 466 |
# enable period filters by default |
467 | 467 |
field.enabled = (field.id in ('start', 'end')) |
468 |
if field.type == 'item': |
|
469 |
field.enabled = field.in_filters |
|
468 | 470 | |
469 | 471 |
r += htmltext('<h3><span>%s</span> <span class="change">(<a id="filter-settings">%s</a>)</span></h3>' % ( |
470 | 472 |
_('Filters'), _('change'))) |
... | ... | |
513 | 515 |
if type(options[0]) in (tuple, list): |
514 | 516 |
if len(options[0]) == 2: |
515 | 517 |
options = [(x[0], x[1], x[0]) for x in options] |
518 |
options.insert(0, (None, '', None)) |
|
519 |
else: |
|
520 |
options.insert(0, '') |
|
516 | 521 |
r += SingleSelectWidget(filter_field_key, title=filter_field.label, |
517 | 522 |
options=options, value=filter_field_value, |
518 | 523 |
render_br=False).render() |
wcs/fields.py | ||
---|---|---|
147 | 147 |
else: |
148 | 148 |
extra_fields = [] |
149 | 149 |
for attribute in self.get_admin_attributes() + extra_fields: |
150 |
if attribute in ('in_listing', ): |
|
150 |
if attribute in ('in_listing', 'in_filters'):
|
|
151 | 151 |
continue |
152 | 152 |
if hasattr(self, attribute) and getattr(self, attribute) is not None: |
153 | 153 |
val = getattr(self, attribute) |
... | ... | |
851 | 851 |
anonymise = False |
852 | 852 |
widget_class = SingleSelectHintWidget |
853 | 853 |
data_source = {} |
854 |
in_filters = False |
|
854 | 855 | |
855 | 856 |
def __init__(self, **kwargs): |
856 | 857 |
self.items = [] |
... | ... | |
961 | 962 | |
962 | 963 |
def fill_admin_form(self, form): |
963 | 964 |
WidgetField.fill_admin_form(self, form) |
965 |
form.add(CheckboxWidget, 'in_filters', title=_('Include in default filters'), |
|
966 |
value=self.in_filters, advanced=True) |
|
964 | 967 |
form.add(CheckboxWidget, 'show_as_radio', title = _('Show as radio buttons'), |
965 | 968 |
value = self.show_as_radio) |
966 | 969 |
form.add(WidgetList, 'items', title = _('Items'), element_type = StringWidget, |
... | ... | |
975 | 978 |
advanced=is_datasource_advanced(self.data_source)) |
976 | 979 | |
977 | 980 |
def get_admin_attributes(self): |
978 |
return WidgetField.get_admin_attributes(self) + ['items', 'show_as_radio', 'data_source'] |
|
981 |
return WidgetField.get_admin_attributes(self) + ['items', |
|
982 |
'show_as_radio', 'data_source', 'in_filters'] |
|
979 | 983 | |
980 | 984 |
def check_admin_form(self, form): |
981 | 985 |
items = form.get_widget('items').parse() |
982 |
- |