From bba79064938b1561b98dab93e0b7616c44b3ab28 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Fri, 6 May 2022 09:38:30 +0200 Subject: [PATCH] =?UTF-8?q?API:=20traitement=20des=20param=C3=A8tres=20err?= =?UTF-8?q?on=C3=A9s=20(404)=20+=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/absences.py | 24 +++++++++----------- app/api/etudiants.py | 40 +++++++++++++++++++-------------- app/api/evaluations.py | 2 +- app/api/formations.py | 6 +---- app/api/partitions.py | 12 ++-------- app/api/tools.py | 8 ++++--- tests/api/test_api_etudiants.py | 8 +++++++ 7 files changed, 50 insertions(+), 50 deletions(-) diff --git a/app/api/absences.py b/app/api/absences.py index b37a256a..1992454c 100644 --- a/app/api/absences.py +++ b/app/api/absences.py @@ -5,7 +5,7 @@ from flask import jsonify from app.api import bp from app.api.errors import error_response from app.api.auth import token_auth, token_permission_required -from app.api.tools import get_etu_from_etudid_or_nip_or_ine +from app.api.tools import get_etud_from_etudid_or_nip_or_ine from app.scodoc import notesdb as ndb from app.scodoc import sco_abs @@ -50,12 +50,11 @@ def absences(etudid: int = None, nip: int = None, ine: int = None): """ if etudid is None: # Récupération de l'étudiant - etud = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) + etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) if etud is None: return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel.\n " - "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", + 404, + message="id de l'étudiant (etudid, nip, ine) inconnu", ) etudid = etud.etudid @@ -103,16 +102,13 @@ def absences_just(etudid: int = None, nip: int = None, ine: int = None): ] """ if etudid is None: - # Récupération de l'étudiant - try: - etu = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) - etudid = etu.etudid - except AttributeError: + etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) + if etud is None: return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel.\n " - "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", + 404, + message="id de l'étudiant (etudid, nip, ine) inconnu", ) + etudid = etud.etudid # Récupération des absences justifiées de l'étudiant abs_just = [ @@ -149,7 +145,7 @@ def absences_just(etudid: int = None, nip: int = None, ine: int = None): # members = get_group_members(group_id) # except ValueError: # return error_response( -# 409, message="La requête ne peut être traitée en l’état actuel" +# 404, message="La requête ne peut être traitée en l’état actuel" # ) # data = [] diff --git a/app/api/etudiants.py b/app/api/etudiants.py index 6ad762c5..afeb8aba 100644 --- a/app/api/etudiants.py +++ b/app/api/etudiants.py @@ -7,7 +7,7 @@ from app import models from app.api import bp from app.api.errors import error_response from app.api.auth import token_auth, token_permission_required -from app.api.tools import get_etu_from_etudid_or_nip_or_ine +from app.api.tools import get_etud_from_etudid_or_nip_or_ine from app.models import FormSemestreInscription, FormSemestre, Identite from app.scodoc import sco_bulletins from app.scodoc import sco_groups @@ -96,8 +96,12 @@ def etudiant(etudid: int = None, nip: int = None, ine: int = None): } """ # Récupération de l'étudiant - etud = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) - + etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) + if etud is None: + return error_response( + 404, + message="id de l'étudiant (etudid, nip, ine) inconnu", + ) # Mise en forme des données data = etud.to_dict_bul(include_urls=False) @@ -150,7 +154,12 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None) ] """ # Récupération de l'étudiant - etud = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) + etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) + if etud is None: + return error_response( + 404, + message="id de l'étudiant (etudid, nip, ine) inconnu", + ) formsemestres = models.FormSemestre.query.filter( models.FormSemestreInscription.etudid == etud.id, @@ -383,17 +392,15 @@ def etudiant_bulletin_semestre( app.set_sco_dept(dept.acronym) - # Récupération de l'étudiant - try: - etu = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) - except AttributeError: + etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) + if etud is None: return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel.\n " - "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", + 404, + message="id de l'étudiant (etudid, nip, ine) inconnu", ) - - return sco_bulletins.get_formsemestre_bulletin_etud_json(formsemestre, etu, version) + return sco_bulletins.get_formsemestre_bulletin_etud_json( + formsemestre, etud, version + ) @bp.route( @@ -446,12 +453,11 @@ def etudiant_groups( ] """ if etudid is None: - etud = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) + etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) if etud is None: return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel.\n " - "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", + 404, + message="id de l'étudiant (etudid, nip, ine) inconnu", ) etudid = etud.etudid diff --git a/app/api/evaluations.py b/app/api/evaluations.py index 7fb1e6c5..cef58a42 100644 --- a/app/api/evaluations.py +++ b/app/api/evaluations.py @@ -99,7 +99,7 @@ def evaluation_notes(evaluation_id: int): data = do_evaluation_get_all_notes(evaluation_id) except AttributeError: # ??? return error_response( - 409, + 404, message="La requête ne peut être traitée en l’état actuel.", ) diff --git a/app/api/formations.py b/app/api/formations.py index f2443817..6ca6fde1 100644 --- a/app/api/formations.py +++ b/app/api/formations.py @@ -176,11 +176,7 @@ def formation_export_by_formation_id(formation_id: int, export_ids=False): # Utilisation de la fonction formation_export data = sco_formations.formation_export(formation_id, export_ids) except ValueError: - return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel. \n" - "Veillez vérifier la conformité du 'formation_id'", - ) + return error_response(500, message="Erreur inconnue") return jsonify(data) diff --git a/app/api/partitions.py b/app/api/partitions.py index ed75fd11..1ee74c46 100644 --- a/app/api/partitions.py +++ b/app/api/partitions.py @@ -113,11 +113,7 @@ def etud_in_group(group_id: int, etat=None): data = get_group_members(group_id, etat) if len(data) == 0: - return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel. \n" - "Aucun groupe ne correspond au 'group_id' renseigné", - ) + return error_response(404, message="group_id inconnu") return jsonify(data) @@ -146,8 +142,4 @@ def set_groups( setGroups(partition_id, groups_lists, groups_to_create, groups_to_delete) return error_response(200, message="Groups set") except ValueError: - return error_response( - 409, - message="La requête ne peut être traitée en l’état actuel. \n" - "Veillez vérifier la conformité des éléments passé en paramètres", - ) + return error_response(404, message="Erreur") diff --git a/app/api/tools.py b/app/api/tools.py index 35b07cf2..e03d8334 100644 --- a/app/api/tools.py +++ b/app/api/tools.py @@ -1,15 +1,17 @@ from app import models -def get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine): +def get_etud_from_etudid_or_nip_or_ine( + etudid=None, nip=None, ine=None +) -> models.Identite: """ - Fonction qui retourne un etudiant en fonction de l'etudid, code nip et code ine rentré en paramètres + etudiant en fonction de l'etudid, code nip et code ine rentré en paramètres etudid : None ou un int etudid nip : None ou un int code_nip ine : None ou un int code_ine - Exemple de résultat: + Return None si étudiant inexistant. """ if etudid is None: if nip is None: # si ine diff --git a/tests/api/test_api_etudiants.py b/tests/api/test_api_etudiants.py index d2984f8e..621f0859 100644 --- a/tests/api/test_api_etudiants.py +++ b/tests/api/test_api_etudiants.py @@ -180,6 +180,14 @@ def test_etudiant_bulletin_semestre(api_headers): bul = r.json() assert len(bul) == 13 # HARDCODED + ### --- Test étudiant inexistant + r = requests.get( + API_URL + "/etudiant/ine/189919919119191/formsemestre/1/bulletin", + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 404 + def test_etudiant_groups(api_headers): """