From 728ff1790dbc0e9efd970bc8862d94e58431094d Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 14 Jan 2025 01:46:32 +0100 Subject: [PATCH] Fix API /formsemestres/with_description/query error handling. Tests ok. --- app/api/formsemestres.py | 17 ++++++++++------- tests/api/test_api_permissions.py | 1 + 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/api/formsemestres.py b/app/api/formsemestres.py index 81df34ede..1b208cf70 100644 --- a/app/api/formsemestres.py +++ b/app/api/formsemestres.py @@ -18,7 +18,7 @@ import datetime import io from operator import attrgetter, itemgetter -from flask import g, make_response, request +from flask import g, make_response, request, Response from flask_json import as_json from flask_login import current_user, login_required from flask_sqlalchemy.query import Query @@ -101,7 +101,7 @@ def formsemestre_get_with_description(formsemestre_id: int): return sem -def _list_formsemestres_query() -> Query: +def _list_formsemestres_query() -> Query | Response: """Recupère les formsemestres selon les arguments passés (request.args)""" etape_apo = request.args.get("etape_apo") annee_scolaire = request.args.get("annee_scolaire") @@ -192,9 +192,10 @@ def formsemestres_query(): ine: """ - formsemestres = _list_formsemestres_query() - - return [formsemestre.to_dict_api() for formsemestre in formsemestres] + formsemestres_or_reponse = _list_formsemestres_query() + if isinstance(formsemestres_or_reponse, Response): + return formsemestres_or_reponse + return [formsemestre.to_dict_api() for formsemestre in formsemestres_or_reponse] @bp.route("/formsemestre//edit", methods=["POST"]) @@ -882,9 +883,11 @@ def formsemestres_with_description(): avec description externe pour AutoSco. """ formsemestre: FormSemestre - formsemestres = _list_formsemestres_query() + formsemestres_or_reponse = _list_formsemestres_query() + if isinstance(formsemestres_or_reponse, Response): + return formsemestres_or_reponse res = [] - for formsemestre in formsemestres: + for formsemestre in formsemestres_or_reponse: sem = formsemestre.to_dict_api() _add_description(formsemestre, sem) res.append(sem) diff --git a/tests/api/test_api_permissions.py b/tests/api/test_api_permissions.py index c459aeed8..2de5a425c 100755 --- a/tests/api/test_api_permissions.py +++ b/tests/api/test_api_permissions.py @@ -73,6 +73,7 @@ def test_permissions(api_headers): # par défaut, on passe tous les arguments de all_args endpoint_args = { "api.formsemestres_query": {}, + "api.formsemestres_with_description": {"formsemestre_id": 1}, "api.formsemestre_edt": { "formsemestre_id": 1, },