From 79b79ddc76eea11452d25961fbe7502bdd6e4a19 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Fri, 22 Apr 2022 16:22:10 +0200 Subject: [PATCH] factorisation des fichiers departements.py etudiant.py et formsemestre.py --- app/api/departements.py | 17 ++++----- app/api/etudiants.py | 80 ++++++++-------------------------------- app/api/formsemestres.py | 28 ++++---------- app/api/tools.py | 22 +++++++++++ 4 files changed, 54 insertions(+), 93 deletions(-) create mode 100644 app/api/tools.py diff --git a/app/api/departements.py b/app/api/departements.py index 6eacf566c..8d977ce25 100644 --- a/app/api/departements.py +++ b/app/api/departements.py @@ -71,21 +71,17 @@ def liste_etudiants(dept: str, formsemestre_id=None): formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first() # Récupération du département departement = formsemestre.departement - # Récupération des étudiants - etudiants = departement.etudiants.all() - - # Mise en forme des données - list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants] # Si le formsemestre_id n'a pas été renseigné else: # Récupération du formsemestre departement = models.Departement.query.filter_by(acronym=dept).first() - # Récupération des étudiants - etudiants = departement.etudiants.all() - # Mise en forme des données - list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants] + # Récupération des étudiants + etudiants = departement.etudiants.all() + + # Mise en forme des données + list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants] return jsonify(list_etu) @@ -203,6 +199,9 @@ def semestre_index(dept: str, formsemestre_id: int): ues = formsemestre.query_ues() ues_dict = [] + ressources = [] + saes = [] + for ue in ues: ues_dict.append(ue.to_dict()) ressources = ue.get_ressources() diff --git a/app/api/etudiants.py b/app/api/etudiants.py index 6a96d2120..87692ad46 100644 --- a/app/api/etudiants.py +++ b/app/api/etudiants.py @@ -7,6 +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_request from app.scodoc.sco_bulletins_json import make_json_formsemestre_bulletinetud from app.scodoc.sco_groups import get_etud_groups from app.scodoc.sco_permissions import Permission @@ -52,7 +53,6 @@ def etudiants(): data = [d.to_dict_bul(include_urls=False) for d in etu] return jsonify(data) - # return error_response(501, message="Not implemented") @bp.route("/etudiants/courant", methods=["GET"]) @@ -97,7 +97,6 @@ def etudiants_courant(): data.append(etu.to_dict_bul(include_urls=False)) return jsonify(data) - # return error_response(501, message="Not implemented") @bp.route("/etudiant/etudid/", methods=["GET"]) @@ -126,32 +125,8 @@ def etudiant(etudid: int = None, nip: int = None, ine: int = None): "prenom": "JACQUES" } """ - # etu = [] - - if etudid is None: - if nip is None: # si ine - etu = models.Identite.query.filter_by(code_ine=str(ine)).first() - else: # si nip - etu = models.Identite.query.filter_by(code_nip=str(nip)).first() - - else: # si etudid - etu = models.Identite.query.filter_by(id=etudid).first() - - - - # if etudid is not None: # Si route etudid - # # Récupération de l'étudiant - # etu = models.Identite.query.filter_by(id=etudid).first() - # - # if nip is not None: # Si route nip - # # Récupération de l'étudiant - # etu = models.Identite.query.filter_by(code_nip=str(nip)).first() - # - # breakpoint() - # - # if ine is not None: # Si route ine - # # Récupération de l'étudiant - # etu = models.Identite.query.filter_by(code_ine=str(ine)).first() + # Récupération de l'étudiant + etu = get_etu_from_request(etudid, nip, ine) # Mise en forme des données data = etu.to_dict_bul(include_urls=False) @@ -210,31 +185,19 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None) # Récupération de toutes les inscriptions inscriptions = models.FormSemestreInscription.query.all() + # Récupération de l'étudiant + etu = get_etu_from_request(etudid, nip, ine) + sems = [] # Filtre les inscriptions contenant l'étudiant for sem in inscriptions: - if etudid is None: - if nip is None: # si ine - # Récupération de l'étudiant - etu = models.Identite.query.filter_by(code_ine=str(ine)).first() - if sem.etudid == etu.etudid: - sems.append(sem) - else: # si nip - # Récupération de l'étudiant - etu = models.Identite.query.filter_by(code_nip=str(nip)).first() - if sem.etudid == etu.etudid: - sems.append(sem) - else: # si etudid - if sem.etudid == etudid: - sems.append(sem) - - # Mise en forme des données - # data_inscriptions = [d.to_dict() for d in sems] + if sem.etudid == etu.etudid: + sems.append(sem) formsemestres = [] # Filtre les formsemestre contenant les inscriptions de l'étudiant - for sem in sems:#data_inscriptions: + for sem in sems: #data_inscriptions: res = models.FormSemestre.query.filter_by(id=sem.formsemestre_id).first() formsemestres.append(res) @@ -269,12 +232,9 @@ def etudiant_bulletin_semestre(formsemestre_id, etudid: int = None, nip: int = N app.set_sco_dept(dept.acronym) if etudid is None: - if nip is None: # si ine - etu = models.Identite.query.filter_by(code_nip=str(ine)).first() - return make_json_formsemestre_bulletinetud(formsemestre_id, etu.etudid) - else: # si nip - etu = models.Identite.query.filter_by(code_nip=str(nip)).first() - return make_json_formsemestre_bulletinetud(formsemestre_id, etu.etudid) + # Récupération de l'étudiant + etu = get_etu_from_request(etudid, nip, ine) + etudid = etu.etudid return make_json_formsemestre_bulletinetud(formsemestre_id, etudid) @@ -322,17 +282,9 @@ def etudiant_groups(formsemestre_id: int, etudid: int = None, nip: int = None, i # Fonction utilisée : app.scodoc.sco_groups.get_etud_groups() if etudid is None: - if nip is not None: # Si route nip - # Récupération de l'étudiant - etu = models.Identite.query.filter_by(code_nip=str(nip)).first() - # Récupération de sont etudid - etudid = etu.etudid - - if ine is not None: # Si route ine - # Récupération de l'étudiant - etu = models.Identite.query.filter_by(code_ine=str(ine)).first() - # Récupération de sont etudid - etudid = etu.etudid + # Récupération de l'étudiant + etu = get_etu_from_request(etudid, nip, ine) + etudid = etu.etudid # Récupération du formsemestre sem = models.FormSemestre.query.filter_by(id=formsemestre_id).first() @@ -343,4 +295,4 @@ def etudiant_groups(formsemestre_id: int, etudid: int = None, nip: int = None, i except ValueError: return error_response(409, message="La requête ne peut être traitée en l’état actuel") - return jsonify(data) \ No newline at end of file + return jsonify(data) diff --git a/app/api/formsemestres.py b/app/api/formsemestres.py index 6f7778cb3..e13eda3b1 100644 --- a/app/api/formsemestres.py +++ b/app/api/formsemestres.py @@ -6,7 +6,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.scodoc.sco_bulletins import formsemestre_bulletinetud_dict +from app.api.tools import get_etu_from_request from app.scodoc.sco_bulletins_json import make_json_formsemestre_bulletinetud from app.scodoc.sco_permissions import Permission from app.scodoc.sco_pvjury import formsemestre_pvjury @@ -24,10 +24,10 @@ def formsemestre(formsemestre_id: int): """ # Récupération de tous les formsemestres - list_formsemetre = models.FormSemestre.query.filter_by(id=formsemestre_id) + formsemetre = models.FormSemestre.query.filter_by(id=formsemestre_id).first() # Mise en forme des données - data = list_formsemetre[0].to_dict() + data = formsemetre.to_dict() return jsonify(data) @@ -61,26 +61,14 @@ def etudiant_bulletin(formsemestre_id, dept, format="json", etudid: int = None, app.set_sco_dept(dept) - data = [] - if etudid is None: - if nip is None: # si ine - etu = models.Identite.query.filter_by(code_ine=str(ine)).first() - # data = formsemestre_bulletinetud_dict(formsemestre_id, etu.id) - data = make_json_formsemestre_bulletinetud(formsemestre_id, etu.id) - return data - else: # si nip - etu = models.Identite.query.filter_by(code_nip=str(nip)).first() - # data = formsemestre_bulletinetud_dict(formsemestre_id, etu.id) - data = make_json_formsemestre_bulletinetud(formsemestre_id, etu.id) - return data - else: # si etudid - # data = formsemestre_bulletinetud_dict(formsemestre_id, etudid) - data = make_json_formsemestre_bulletinetud(formsemestre_id, etudid) - # return jsonify(data) - return data + # Récupération de l'étudiant + etu = get_etu_from_request(etudid, nip, ine) + etudid = etu.etudid + data = make_json_formsemestre_bulletinetud(formsemestre_id, etudid) + return data # if args[0] == "short": diff --git a/app/api/tools.py b/app/api/tools.py new file mode 100644 index 000000000..1daed5b41 --- /dev/null +++ b/app/api/tools.py @@ -0,0 +1,22 @@ +from app import models + +def get_etu_from_request(etudid, nip, ine): + """ + Fonction qui retourne un 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: + """ + + if etudid is None: + if nip is None: # si ine + etu = models.Identite.query.filter_by(code_ine=str(ine)).first() + else: # si nip + etu = models.Identite.query.filter_by(code_nip=str(nip)).first() + else: # si etudid + etu = models.Identite.query.filter_by(id=etudid).first() + + return etu