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)]