factorisation des fichiers departements.py etudiant.py et formsemestre.py

This commit is contained in:
leonard_montalbano 2022-04-22 16:22:10 +02:00
parent 07123089e2
commit 79b79ddc76
4 changed files with 54 additions and 93 deletions

View File

@ -71,21 +71,17 @@ def liste_etudiants(dept: str, formsemestre_id=None):
formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first() formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first()
# Récupération du département # Récupération du département
departement = formsemestre.departement 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é # Si le formsemestre_id n'a pas été renseigné
else: else:
# Récupération du formsemestre # Récupération du formsemestre
departement = models.Departement.query.filter_by(acronym=dept).first() departement = models.Departement.query.filter_by(acronym=dept).first()
# Récupération des étudiants
etudiants = departement.etudiants.all()
# Mise en forme des données # Récupération des étudiants
list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants] 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) return jsonify(list_etu)
@ -203,6 +199,9 @@ def semestre_index(dept: str, formsemestre_id: int):
ues = formsemestre.query_ues() ues = formsemestre.query_ues()
ues_dict = [] ues_dict = []
ressources = []
saes = []
for ue in ues: for ue in ues:
ues_dict.append(ue.to_dict()) ues_dict.append(ue.to_dict())
ressources = ue.get_ressources() ressources = ue.get_ressources()

View File

@ -7,6 +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_request
from app.scodoc.sco_bulletins_json import make_json_formsemestre_bulletinetud from app.scodoc.sco_bulletins_json import make_json_formsemestre_bulletinetud
from app.scodoc.sco_groups import get_etud_groups from app.scodoc.sco_groups import get_etud_groups
from app.scodoc.sco_permissions import Permission 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] data = [d.to_dict_bul(include_urls=False) for d in etu]
return jsonify(data) return jsonify(data)
# return error_response(501, message="Not implemented")
@bp.route("/etudiants/courant", methods=["GET"]) @bp.route("/etudiants/courant", methods=["GET"])
@ -97,7 +97,6 @@ def etudiants_courant():
data.append(etu.to_dict_bul(include_urls=False)) data.append(etu.to_dict_bul(include_urls=False))
return jsonify(data) return jsonify(data)
# return error_response(501, message="Not implemented")
@bp.route("/etudiant/etudid/<int:etudid>", methods=["GET"]) @bp.route("/etudiant/etudid/<int:etudid>", methods=["GET"])
@ -126,32 +125,8 @@ def etudiant(etudid: int = None, nip: int = None, ine: int = None):
"prenom": "JACQUES" "prenom": "JACQUES"
} }
""" """
# etu = [] # Récupération de l'étudiant
etu = get_etu_from_request(etudid, nip, ine)
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()
# Mise en forme des données # Mise en forme des données
data = etu.to_dict_bul(include_urls=False) 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 # Récupération de toutes les inscriptions
inscriptions = models.FormSemestreInscription.query.all() inscriptions = models.FormSemestreInscription.query.all()
# Récupération de l'étudiant
etu = get_etu_from_request(etudid, nip, ine)
sems = [] sems = []
# Filtre les inscriptions contenant l'étudiant # Filtre les inscriptions contenant l'étudiant
for sem in inscriptions: for sem in inscriptions:
if etudid is None: if sem.etudid == etu.etudid:
if nip is None: # si ine sems.append(sem)
# 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]
formsemestres = [] formsemestres = []
# Filtre les formsemestre contenant les inscriptions de l'étudiant # 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() res = models.FormSemestre.query.filter_by(id=sem.formsemestre_id).first()
formsemestres.append(res) 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) app.set_sco_dept(dept.acronym)
if etudid is None: if etudid is None:
if nip is None: # si ine # Récupération de l'étudiant
etu = models.Identite.query.filter_by(code_nip=str(ine)).first() etu = get_etu_from_request(etudid, nip, ine)
return make_json_formsemestre_bulletinetud(formsemestre_id, etu.etudid) etudid = 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)
return make_json_formsemestre_bulletinetud(formsemestre_id, 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() # Fonction utilisée : app.scodoc.sco_groups.get_etud_groups()
if etudid is None: if etudid is None:
if nip is not None: # Si route nip # Récupération de l'étudiant
# Récupération de l'étudiant etu = get_etu_from_request(etudid, nip, ine)
etu = models.Identite.query.filter_by(code_nip=str(nip)).first() etudid = etu.etudid
# 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 du formsemestre # Récupération du formsemestre
sem = models.FormSemestre.query.filter_by(id=formsemestre_id).first() 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: except ValueError:
return error_response(409, message="La requête ne peut être traitée en létat actuel") return error_response(409, message="La requête ne peut être traitée en létat actuel")
return jsonify(data) return jsonify(data)

View File

@ -6,7 +6,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.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_bulletins_json import make_json_formsemestre_bulletinetud
from app.scodoc.sco_permissions import Permission from app.scodoc.sco_permissions import Permission
from app.scodoc.sco_pvjury import formsemestre_pvjury from app.scodoc.sco_pvjury import formsemestre_pvjury
@ -24,10 +24,10 @@ def formsemestre(formsemestre_id: int):
""" """
# Récupération de tous les formsemestres # 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 # Mise en forme des données
data = list_formsemetre[0].to_dict() data = formsemetre.to_dict()
return jsonify(data) return jsonify(data)
@ -61,26 +61,14 @@ def etudiant_bulletin(formsemestre_id, dept, format="json", etudid: int = None,
app.set_sco_dept(dept) app.set_sco_dept(dept)
data = []
if etudid is None: 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() etu = get_etu_from_request(etudid, nip, ine)
# data = formsemestre_bulletinetud_dict(formsemestre_id, etu.id) etudid = etu.etudid
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
data = make_json_formsemestre_bulletinetud(formsemestre_id, etudid)
return data
# if args[0] == "short": # if args[0] == "short":

22
app/api/tools.py Normal file
View File

@ -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: <Itendite>
"""
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