Merge branch 'new_api' of https://scodoc.org/git/ScoDoc/ScoDoc into new_api

This commit is contained in:
leonard_montalbano 2022-04-26 15:27:57 +02:00
commit c3eeec29d8
2 changed files with 27 additions and 41 deletions

View File

@ -1,16 +1,16 @@
#################################################### Etudiants ######################################################## #################################################### Etudiants ########################################################
import app
from flask import jsonify from flask import jsonify
import app
from app import models 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_permission_required
from app.api.tools import get_etu_from_request from app.api.tools import get_etu_from_request
from app.models import FormSemestreInscription, FormSemestre, Identite from app.models import FormSemestreInscription, FormSemestre, Identite
from app.scodoc.sco_bulletins import get_formsemestre_bulletin_etud_json from app.scodoc import sco_bulletins
from app.scodoc.sco_groups import get_etud_groups from app.scodoc import sco_groups
from app.scodoc.sco_permissions import Permission from app.scodoc.sco_permissions import Permission
@ -46,13 +46,14 @@ def etudiants_courant():
... ...
""" """
# Récupération de tous les étudiants # Récupération de tous les étudiants
etus = Identite.query.filter( etuds = Identite.query.filter(
Identite.id == FormSemestreInscription.etudid, Identite.id == FormSemestreInscription.etudid,
FormSemestreInscription.formsemestre_id == FormSemestre.id, FormSemestreInscription.formsemestre_id == FormSemestre.id,
FormSemestre.date_debut <= app.db.func.now(), FormSemestre.date_debut <= app.db.func.now(),
FormSemestre.date_fin >= app.db.func.now()) FormSemestre.date_fin >= app.db.func.now(),
)
data = [etu.to_dict_bul(include_urls=False) for etu in etus] data = [etu.to_dict_bul(include_urls=False) for etu in etuds]
return jsonify(data) return jsonify(data)
@ -97,7 +98,7 @@ def etudiant(etudid: int = None, nip: int = None, ine: int = None):
@token_permission_required(Permission.APIView) @token_permission_required(Permission.APIView)
def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None): def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None):
""" """
Retourne la liste des semestres qu'un étudiant a suivis Retourne la liste des semestres qu'un étudiant a suivi, triés par ordre chronologique.
etudid : l'etudid d'un étudiant etudid : l'etudid d'un étudiant
nip : le code nip d'un étudiant nip : le code nip d'un étudiant
@ -108,7 +109,6 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None)
{ {
"titre": "master machine info", "titre": "master machine info",
"gestion_semestrielle": false, "gestion_semestrielle": false,
"scodoc7_id": null,
"date_debut": "01/09/2021", "date_debut": "01/09/2021",
"bul_bgcolor": null, "bul_bgcolor": null,
"date_fin": "15/12/2022", "date_fin": "15/12/2022",
@ -139,27 +139,14 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None)
] ]
""" """
# Récupération de l'étudiant # Récupération de l'étudiant
etu = get_etu_from_request(etudid, nip, ine) etud = get_etu_from_request(etudid, nip, ine)
# Récupération de toutes les inscriptions de l'étudiant formsemestres = models.FormSemestre.query.filter(
formsemestres_inscriptions = models.FormSemestreInscription.query.filter_by( models.FormSemestreInscription.etudid == etud.id,
etud=etu models.FormSemestreInscription.formsemestre_id == models.FormSemestre.id,
).all() ).order_by(models.FormSemestre.date_debut)
formsemestres = [] return jsonify([formsemestre.to_dict() for formsemestre in formsemestres])
# Récupération des formsemestres contenant les inscriptions de l'étudiant
for formsemestre_inscription in formsemestres_inscriptions:
res = models.FormSemestre.query.filter_by(
id=formsemestre_inscription.formsemestre_id
).first_or_404()
formsemestres.append(res)
data = []
# Mise en forme des données
for formsemestre in formsemestres:
data.append(formsemestre.to_dict())
return jsonify(data)
@bp.route( @bp.route(
@ -188,7 +175,9 @@ def etudiant_bulletin_semestre(
""" """
# Fonction utilisée : app.scodoc.sco_bulletins_json.make_json_formsemestre_bulletinetud() # Fonction utilisée : app.scodoc.sco_bulletins_json.make_json_formsemestre_bulletinetud()
formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first_or_404() formsemestre = models.FormSemestre.query.filter_by(
id=formsemestre_id
).first_or_404()
dept = models.Departement.query.filter_by(id=formsemestre.dept_id).first_or_404() dept = models.Departement.query.filter_by(id=formsemestre.dept_id).first_or_404()
@ -201,10 +190,10 @@ def etudiant_bulletin_semestre(
return error_response( return error_response(
409, 409,
message="La requête ne peut être traitée en létat actuel.\n " message="La requête ne peut être traitée en létat actuel.\n "
"Veilliez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide",
) )
return get_formsemestre_bulletin_etud_json(formsemestre, etu) return sco_bulletins.get_formsemestre_bulletin_etud_json(formsemestre, etu)
@bp.route( @bp.route(
@ -255,8 +244,6 @@ def etudiant_groups(
} }
] ]
""" """
# Fonction utilisée : app.scodoc.sco_groups.get_etud_groups()
if etudid is None: if etudid is None:
# Récupération de l'étudiant # Récupération de l'étudiant
try: try:
@ -266,19 +253,18 @@ def etudiant_groups(
return error_response( return error_response(
409, 409,
message="La requête ne peut être traitée en létat actuel.\n " message="La requête ne peut être traitée en létat actuel.\n "
"Veilliez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide", "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide",
) )
# Récupération du formsemestre # Récupération du formsemestre
sem = models.FormSemestre.query.filter_by(id=formsemestre_id).first_or_404() sem = models.FormSemestre.query.filter_by(id=formsemestre_id).first_or_404()
try: try:
# Utilisation de la fonction get_etud_groups data = sco_groups.get_etud_groups(etudid, sem.id)
data = get_etud_groups(etudid, sem.id)
except AttributeError: except AttributeError:
return error_response( return error_response(
409, 409,
message="La requête ne peut être traitée en létat actuel.\n " message="La requête ne peut être traitée en létat actuel.\n "
"Veilliez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide" "Veuillez vérifier que l'id de l'étudiant (etudid, nip, ine) est valide"
" et le formsemestre_id sont valides", " et le formsemestre_id sont valides",
) )

View File

@ -13,10 +13,10 @@ def get_etu_from_request(etudid, nip, ine):
""" """
if etudid is None: if etudid is None:
if nip is None: # si ine if nip is None: # si ine
etu = models.Identite.query.filter_by(code_ine=str(ine)).first() etud = models.Identite.query.filter_by(code_ine=str(ine)).first()
else: # si nip else: # si nip
etu = models.Identite.query.filter_by(code_nip=str(nip)).first() etud = models.Identite.query.filter_by(code_nip=str(nip)).first()
else: # si etudid else: # si etudid
etu = models.Identite.query.filter_by(id=etudid).first() etud = models.Identite.query.filter_by(id=etudid).first()
return etu return etud