API: traitement des paramètres erronés (404) + test

This commit is contained in:
Emmanuel Viennet 2022-05-06 09:38:30 +02:00
parent 1accb5025a
commit bba7906493
7 changed files with 50 additions and 50 deletions

View File

@ -5,7 +5,7 @@ from flask import jsonify
from app.api import bp from app.api import bp
from app.api.errors import error_response from app.api.errors import error_response
from app.api.auth import token_auth, token_permission_required 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 notesdb as ndb
from app.scodoc import sco_abs 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: if etudid is None:
# Récupération de l'étudiant # 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: if etud is None:
return error_response( return error_response(
409, 404,
message="La requête ne peut être traitée en létat actuel.\n " message="id de l'étudiant (etudid, nip, ine) inconnu",
"Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide",
) )
etudid = etud.etudid etudid = etud.etudid
@ -103,16 +102,13 @@ def absences_just(etudid: int = None, nip: int = None, ine: int = None):
] ]
""" """
if etudid is None: if etudid is None:
# Récupération de l'étudiant etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine)
try: if etud is None:
etu = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine)
etudid = etu.etudid
except AttributeError:
return error_response( return error_response(
409, 404,
message="La requête ne peut être traitée en létat actuel.\n " message="id de l'étudiant (etudid, nip, ine) inconnu",
"Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide",
) )
etudid = etud.etudid
# Récupération des absences justifiées de l'étudiant # Récupération des absences justifiées de l'étudiant
abs_just = [ abs_just = [
@ -149,7 +145,7 @@ def absences_just(etudid: int = None, nip: int = None, ine: int = None):
# members = get_group_members(group_id) # members = get_group_members(group_id)
# except ValueError: # except ValueError:
# return error_response( # 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 = [] # data = []

View File

@ -7,7 +7,7 @@ from app import models
from app.api import bp from app.api import bp
from app.api.errors import error_response from app.api.errors import error_response
from app.api.auth import token_auth, token_permission_required 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.models import FormSemestreInscription, FormSemestre, Identite
from app.scodoc import sco_bulletins from app.scodoc import sco_bulletins
from app.scodoc import sco_groups 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 # 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 # Mise en forme des données
data = etud.to_dict_bul(include_urls=False) 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 # 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( formsemestres = models.FormSemestre.query.filter(
models.FormSemestreInscription.etudid == etud.id, models.FormSemestreInscription.etudid == etud.id,
@ -383,17 +392,15 @@ def etudiant_bulletin_semestre(
app.set_sco_dept(dept.acronym) app.set_sco_dept(dept.acronym)
# Récupération de l'étudiant etud = get_etud_from_etudid_or_nip_or_ine(etudid, nip, ine)
try: if etud is None:
etu = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine)
except AttributeError:
return error_response( return error_response(
409, 404,
message="La requête ne peut être traitée en létat actuel.\n " message="id de l'étudiant (etudid, nip, ine) inconnu",
"Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", )
return sco_bulletins.get_formsemestre_bulletin_etud_json(
formsemestre, etud, version
) )
return sco_bulletins.get_formsemestre_bulletin_etud_json(formsemestre, etu, version)
@bp.route( @bp.route(
@ -446,12 +453,11 @@ def etudiant_groups(
] ]
""" """
if etudid is None: 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: if etud is None:
return error_response( return error_response(
409, 404,
message="La requête ne peut être traitée en létat actuel.\n " message="id de l'étudiant (etudid, nip, ine) inconnu",
"Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide",
) )
etudid = etud.etudid etudid = etud.etudid

View File

@ -99,7 +99,7 @@ def evaluation_notes(evaluation_id: int):
data = do_evaluation_get_all_notes(evaluation_id) data = do_evaluation_get_all_notes(evaluation_id)
except AttributeError: # ??? except AttributeError: # ???
return error_response( return error_response(
409, 404,
message="La requête ne peut être traitée en létat actuel.", message="La requête ne peut être traitée en létat actuel.",
) )

View File

@ -176,11 +176,7 @@ def formation_export_by_formation_id(formation_id: int, export_ids=False):
# Utilisation de la fonction formation_export # Utilisation de la fonction formation_export
data = sco_formations.formation_export(formation_id, export_ids) data = sco_formations.formation_export(formation_id, export_ids)
except ValueError: except ValueError:
return error_response( return error_response(500, message="Erreur inconnue")
409,
message="La requête ne peut être traitée en létat actuel. \n"
"Veillez vérifier la conformité du 'formation_id'",
)
return jsonify(data) return jsonify(data)

View File

@ -113,11 +113,7 @@ def etud_in_group(group_id: int, etat=None):
data = get_group_members(group_id, etat) data = get_group_members(group_id, etat)
if len(data) == 0: if len(data) == 0:
return error_response( return error_response(404, message="group_id inconnu")
409,
message="La requête ne peut être traitée en létat actuel. \n"
"Aucun groupe ne correspond au 'group_id' renseigné",
)
return jsonify(data) return jsonify(data)
@ -146,8 +142,4 @@ def set_groups(
setGroups(partition_id, groups_lists, groups_to_create, groups_to_delete) setGroups(partition_id, groups_lists, groups_to_create, groups_to_delete)
return error_response(200, message="Groups set") return error_response(200, message="Groups set")
except ValueError: except ValueError:
return error_response( return error_response(404, message="Erreur")
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",
)

View File

@ -1,15 +1,17 @@
from app import models 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 etudid : None ou un int etudid
nip : None ou un int code_nip nip : None ou un int code_nip
ine : None ou un int code_ine ine : None ou un int code_ine
Exemple de résultat: <Itendite> Return None si étudiant inexistant.
""" """
if etudid is None: if etudid is None:
if nip is None: # si ine if nip is None: # si ine

View File

@ -180,6 +180,14 @@ def test_etudiant_bulletin_semestre(api_headers):
bul = r.json() bul = r.json()
assert len(bul) == 13 # HARDCODED 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): def test_etudiant_groups(api_headers):
""" """