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,16 +71,12 @@ 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 # Récupération des étudiants
etudiants = departement.etudiants.all() etudiants = departement.etudiants.all()
@ -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,26 +185,14 @@ 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 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: if sem.etudid == etu.etudid:
sems.append(sem) 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 = []
@ -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,16 +282,8 @@ 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 = models.Identite.query.filter_by(code_nip=str(nip)).first() etu = get_etu_from_request(etudid, nip, ine)
# 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 etudid = etu.etudid
# Récupération du formsemestre # Récupération du formsemestre

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,28 +61,16 @@ 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) data = make_json_formsemestre_bulletinetud(formsemestre_id, etudid)
# return jsonify(data)
return data return data
# if args[0] == "short": # if args[0] == "short":
# data = formsemestre_bulletinetud_dict(formsemestre_id, etudid, version=args[0]) # data = formsemestre_bulletinetud_dict(formsemestre_id, etudid, version=args[0])
# elif args[0] == "selectevals": # elif args[0] == "selectevals":

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