From 87f8beb331235a2954f512ebbb1fd2d09e6d2b40 Mon Sep 17 00:00:00 2001 From: Nicolas ROCHE Date: Fri, 14 Aug 2020 13:56:08 +0200 Subject: [PATCH] api: add parameter to include disabled formdefs (#43630) --- help/fr/api-schema.page | 5 +++++ tests/test_api.py | 12 ++++++++++++ wcs/api.py | 11 +++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/help/fr/api-schema.page b/help/fr/api-schema.page index 110559d06..0dd254d7d 100644 --- a/help/fr/api-schema.page +++ b/help/fr/api-schema.page @@ -81,6 +81,11 @@ par « popularité » en ajoutant un paramètre include-count=on. différentes entrées disposeront alors d'une clé count.

+

+La liste retournée inclura les formulaires désactivés en ajoutant le paramètre +include-disabled=on. +

+ diff --git a/tests/test_api.py b/tests/test_api.py index 5afd6efdf..b01578dd0 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1083,6 +1083,14 @@ def test_categories_formdefs(pub, local_user): formdef2.store() formdef2.data_class().wipe() + formdef2 = FormDef() + formdef2.name = 'test disabled' + formdef2.category_id = category.id + formdef2.fields = [] + formdef2.disabled = True + formdef2.store() + formdef2.data_class().wipe() + resp = get_app(pub).get('/api/categories/category/formdefs/') resp2 = get_app(pub).get('/category/json') assert resp.json == resp2.json @@ -1100,6 +1108,10 @@ def test_categories_formdefs(pub, local_user): assert resp.json['data'][0]['url'] == 'http://example.net/test/' assert resp.json['data'][0]['count'] == 0 + resp = get_app(pub).get('/api/categories/category/formdefs/?include-disabled=on') + assert len(resp.json['data']) == 3 + assert resp.json['data'][2]['title'] == 'test disabled' + get_app(pub).get('/api/categories/XXX/formdefs/', status=404) resp = get_app(pub).get('/api/categories/category/formdefs/?backoffice-submission=on') diff --git a/wcs/api.py b/wcs/api.py index 42872d4b5..5be513247 100644 --- a/wcs/api.py +++ b/wcs/api.py @@ -461,10 +461,13 @@ class ApiFormdefsDirectory(Directory): if formdefs is None: formdefs = FormDef.select(order_by='name', ignore_errors=True, lightweight=True) - if backoffice_submission: - formdefs = [x for x in formdefs if not x.is_disabled()] - else: - formdefs = [x for x in formdefs if not x.is_disabled() or x.disabled_redirection] + include_disabled = get_query_flag('include-disabled') + + if not include_disabled: + if backoffice_submission: + formdefs = [x for x in formdefs if not x.is_disabled()] + else: + formdefs = [x for x in formdefs if not x.is_disabled() or x.disabled_redirection] if self.category: formdefs = [x for x in formdefs if str(x.category_id) == str(self.category.id)]