0001-backoffice-global-view-filtered-bu-category_slugs-53.patch
tests/api/test_formdata.py | ||
---|---|---|
1090 | 1090 |
# check error handling |
1091 | 1091 |
get_app(pub).get(sign_uri('/api/forms/?status=done&limit=plop', user=local_user), status=400) |
1092 | 1092 |
get_app(pub).get(sign_uri('/api/forms/?status=done&offset=plop', user=local_user), status=400) |
1093 |
get_app(pub).get(sign_uri('/api/forms/?category_id=plop', user=local_user), status=400) |
|
1094 | 1093 | |
1095 | 1094 |
# check when there are missing statuses |
1096 | 1095 |
for formdata in data_class.select(): |
tests/backoffice_pages/test_all.py | ||
---|---|---|
3170 | 3170 |
pytest.skip('this requires SQL') |
3171 | 3171 |
return |
3172 | 3172 | |
3173 |
FormDef.wipe() |
|
3174 |
Category.wipe() |
|
3175 | ||
3173 | 3176 |
create_user(pub) |
3174 |
create_environment(pub) |
|
3177 | ||
3178 |
formdef = FormDef() |
|
3179 |
formdef.name = 'form-3' |
|
3180 |
formdef.workflow_roles = {'_receiver': 1} |
|
3181 |
formdef.store() |
|
3182 |
formdata = formdef.data_class()() |
|
3183 |
formdata.just_created() |
|
3184 |
formdata.jump_status('new') |
|
3185 |
formdata.store() |
|
3175 | 3186 | |
3176 | 3187 |
app = login(get_app(pub)) |
3177 | 3188 |
resp = app.get('/backoffice/management/listing?limit=500') |
3178 |
assert 'category_id' not in resp.forms['listing-settings'].fields |
|
3189 |
assert 'category_ids$element0' not in resp.forms['listing-settings'].fields
|
|
3179 | 3190 | |
3180 | 3191 |
cat1 = Category(name='cat1') |
3192 |
cat1.position = 1 |
|
3181 | 3193 |
cat1.store() |
3182 |
formdef = FormDef.get_by_urlname('form-title') |
|
3194 |
formdef = FormDef() |
|
3195 |
formdef.name = 'form-1' |
|
3183 | 3196 |
formdef.category_id = cat1.id |
3197 |
formdef.workflow_roles = {'_receiver': 1} |
|
3184 | 3198 |
formdef.store() |
3199 |
formdata = formdef.data_class()() |
|
3200 |
formdata.just_created() |
|
3201 |
formdata.jump_status('new') |
|
3202 |
formdata.store() |
|
3185 | 3203 | |
3186 | 3204 |
cat2 = Category(name='cat2') |
3205 |
cat1.position = 2 |
|
3187 | 3206 |
cat2.store() |
3188 |
formdef = FormDef.get_by_urlname('other-form') |
|
3207 |
formdef = FormDef() |
|
3208 |
formdef.name = 'form-2' |
|
3189 | 3209 |
formdef.category_id = cat2.id |
3210 |
formdef.workflow_roles = {'_receiver': 1} |
|
3190 | 3211 |
formdef.store() |
3212 |
formdata = formdef.data_class()() |
|
3213 |
formdata.just_created() |
|
3214 |
formdata.jump_status('new') |
|
3215 |
formdata.store() |
|
3191 | 3216 | |
3192 |
resp = app.get('/backoffice/management/listing?limit=500') |
|
3193 |
assert 'category_id' in resp.forms['listing-settings'].fields |
|
3194 |
assert 'management/other-form/' in resp.text |
|
3195 |
assert 'management/form-title/' in resp.text |
|
3217 |
resp = app.get('/backoffice/management/listing') |
|
3218 |
assert 'category_ids$element0' in resp.forms['listing-settings'].fields |
|
3219 |
assert 'management/form-1/' in resp.text |
|
3220 |
assert 'management/form-2/' in resp.text |
|
3221 |
assert 'management/form-3/' in resp.text |
|
3222 | ||
3223 |
resp.forms['listing-settings']['category_ids$element0'] = cat1.id |
|
3224 |
resp = resp.forms['listing-settings'].submit() |
|
3225 |
assert 'management/form-1/' in resp.text |
|
3226 |
assert 'management/form-2/' not in resp.text |
|
3227 |
assert 'management/form-3/' not in resp.text |
|
3196 | 3228 | |
3197 |
resp.forms['listing-settings']['category_id'] = cat1.id
|
|
3229 |
resp.forms['listing-settings']['category_ids$element0'] = cat2.id
|
|
3198 | 3230 |
resp = resp.forms['listing-settings'].submit() |
3199 |
assert 'management/other-form/' not in resp.text |
|
3200 |
assert 'management/form-title/' in resp.text |
|
3231 |
assert 'management/form-1/' not in resp.text |
|
3232 |
assert 'management/form-2/' in resp.text |
|
3233 |
assert 'management/form-3/' not in resp.text |
|
3201 | 3234 | |
3202 |
resp.forms['listing-settings']['category_id'] = cat2.id |
|
3235 |
resp = resp.forms['listing-settings'].submit('category_ids$add_element') |
|
3236 |
resp.forms['listing-settings']['category_ids$element0'] = cat1.id |
|
3237 |
resp.forms['listing-settings']['category_ids$element1'] = cat2.id |
|
3203 | 3238 |
resp = resp.forms['listing-settings'].submit() |
3204 |
assert 'management/other-form/' in resp.text |
|
3205 |
assert 'management/form-title/' not in resp.text |
|
3239 |
assert 'management/form-1/' in resp.text |
|
3240 |
assert 'management/form-2/' in resp.text |
|
3241 |
assert 'management/form-3/' not in resp.text |
|
3242 | ||
3243 |
resp = app.get('/backoffice/management/listing?category_slugs=cat1') |
|
3244 |
assert resp.forms['listing-settings']['category_ids$element0'].value == cat1.id |
|
3245 |
assert 'category_ids$element1' not in resp.forms['listing-settings'].fields |
|
3246 |
assert 'management/form-1/' in resp.text |
|
3247 |
assert 'management/form-2/' not in resp.text |
|
3248 |
assert 'management/form-3/' not in resp.text |
|
3249 | ||
3250 |
resp = app.get('/backoffice/management/listing?category_slugs=cat1,cat2') |
|
3251 |
assert resp.forms['listing-settings']['category_ids$element0'].value == cat1.id |
|
3252 |
assert resp.forms['listing-settings']['category_ids$element1'].value == cat2.id |
|
3253 |
assert 'management/form-1/' in resp.text |
|
3254 |
assert 'management/form-2/' in resp.text |
|
3255 |
assert 'management/form-3/' not in resp.text |
|
3206 | 3256 | |
3207 | 3257 | |
3208 | 3258 |
def test_datetime_in_global_listing(pub): |
wcs/api.py | ||
---|---|---|
406 | 406 |
) |
407 | 407 |
) |
408 | 408 | |
409 |
category_slugs = (get_request().form.get('category_slugs') or '').split(',') |
|
410 |
category_slugs = [c.strip() for c in category_slugs if c.strip()] |
|
411 |
if category_slugs: |
|
412 |
categories = Category.select([Contains('url_name', category_slugs)]) |
|
413 |
criterias.append(Contains('category_id', [c.id for c in categories])) |
|
414 | ||
415 | 409 |
formdatas = sql.AnyFormData.select(criterias, order_by=order_by, limit=limit, offset=offset) |
416 | 410 |
if get_query_flag('ignore-roles'): |
417 | 411 |
# When ignoring roles formdatas will be returned even if they are |
wcs/backoffice/management.py | ||
---|---|---|
63 | 63 |
SingleSelectWidget, |
64 | 64 |
StringWidget, |
65 | 65 |
TextWidget, |
66 |
WidgetList, |
|
66 | 67 |
WysiwygTextWidget, |
67 | 68 |
) |
68 | 69 |
from ..qommon.misc import C_, ellipsize |
... | ... | |
648 | 649 |
if categories: |
649 | 650 |
Category.sort_by_position(categories) |
650 | 651 |
category_options = [(None, C_('categories|All'), '')] + [(x.id, x.name, x.id) for x in categories] |
652 |
category_slugs = (params.get('category_slugs') or '').split(',') |
|
653 |
category_slugs = [c.strip() for c in category_slugs if c.strip()] |
|
654 |
for i, category in enumerate([c for c in categories if c.url_name in category_slugs]): |
|
655 |
params['category_ids$element%s' % i] = category.id |
|
651 | 656 |
form.add( |
652 |
SingleSelectWidget, |
|
653 |
'category_id', |
|
654 |
title=_('Category'), |
|
655 |
options=category_options, |
|
656 |
value=params.get('category_id'), |
|
657 |
WidgetList, |
|
658 |
'category_ids', |
|
659 |
title=_('Categories'), |
|
660 |
element_type=SingleSelectWidget, |
|
661 |
add_element_label=_('Add Category'), |
|
662 |
element_kwargs={ |
|
663 |
'render_br': False, |
|
664 |
'options': category_options, |
|
665 |
}, |
|
657 | 666 |
) |
658 | 667 | |
659 | 668 |
if bool(get_publisher().get_site_option('welco_url', 'variables')): |
... | ... | |
868 | 877 |
criterias.append(Null('submission_channel')) |
869 | 878 |
else: |
870 | 879 |
criterias.append(Equal('submission_channel', get_request().form.get('submission_channel'))) |
871 |
if get_request().form.get('category_id'): |
|
872 |
category_id = misc.get_int_or_400(get_request().form.get('category_id')) |
|
873 |
criterias.append(Equal('category_id', category_id)) |
|
880 |
category_slugs = [] |
|
881 |
category_ids = [] |
|
882 |
if get_request().form: |
|
883 |
prefix = 'category_ids$element' |
|
884 |
category_slugs = (get_request().form.get('category_slugs') or '').split(',') |
|
885 |
category_slugs = [c.strip() for c in category_slugs if c.strip()] |
|
886 |
if category_slugs: |
|
887 |
category_ids = [c.id for c in Category.select() if c.url_name in category_slugs] |
|
888 |
else: |
|
889 |
category_ids = [ |
|
890 |
get_request().form.get(k) for k in get_request().form.keys() if k.startswith(prefix) |
|
891 |
] |
|
892 |
category_ids = [v for v in category_ids if v] |
|
893 |
if category_slugs or category_ids: |
|
894 |
criterias.append(Contains('category_id', category_ids)) |
|
874 | 895 |
if get_request().form.get('q'): |
875 | 896 |
criterias.append(FtsMatch(get_request().form.get('q'))) |
876 | 897 |
return criterias |
877 |
- |