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 ########################################################
import app
from flask import jsonify
import app
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.auth import token_permission_required
from app.api.tools import get_etu_from_request
from app.models import FormSemestreInscription, FormSemestre, Identite
from app.scodoc.sco_bulletins import get_formsemestre_bulletin_etud_json
from app.scodoc.sco_groups import get_etud_groups
from app.scodoc import sco_bulletins
from app.scodoc import sco_groups
from app.scodoc.sco_permissions import Permission
@ -46,13 +46,14 @@ def etudiants_courant():
...
"""
# Récupération de tous les étudiants
etus = Identite.query.filter(
etuds = Identite.query.filter(
Identite.id == FormSemestreInscription.etudid,
FormSemestreInscription.formsemestre_id == FormSemestre.id,
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)
@ -97,7 +98,7 @@ def etudiant(etudid: int = None, nip: int = None, ine: int = None):
@token_permission_required(Permission.APIView)
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
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",
"gestion_semestrielle": false,
"scodoc7_id": null,
"date_debut": "01/09/2021",
"bul_bgcolor": null,
"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
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_inscriptions = models.FormSemestreInscription.query.filter_by(
etud=etu
).all()
formsemestres = models.FormSemestre.query.filter(
models.FormSemestreInscription.etudid == etud.id,
models.FormSemestreInscription.formsemestre_id == models.FormSemestre.id,
).order_by(models.FormSemestre.date_debut)
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)
return jsonify([formsemestre.to_dict() for formsemestre in formsemestres])
@bp.route(
@ -188,7 +175,9 @@ def etudiant_bulletin_semestre(
"""
# 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()
@ -201,10 +190,10 @@ def etudiant_bulletin_semestre(
return error_response(
409,
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(
@ -255,8 +244,6 @@ def etudiant_groups(
}
]
"""
# Fonction utilisée : app.scodoc.sco_groups.get_etud_groups()
if etudid is None:
# Récupération de l'étudiant
try:
@ -266,19 +253,18 @@ def etudiant_groups(
return error_response(
409,
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
sem = models.FormSemestre.query.filter_by(id=formsemestre_id).first_or_404()
try:
# Utilisation de la fonction get_etud_groups
data = get_etud_groups(etudid, sem.id)
data = sco_groups.get_etud_groups(etudid, sem.id)
except AttributeError:
return error_response(
409,
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",
)

View File

@ -13,10 +13,10 @@ def 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()
etud = models.Identite.query.filter_by(code_ine=str(ine)).first()
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
etu = models.Identite.query.filter_by(id=etudid).first()
etud = models.Identite.query.filter_by(id=etudid).first()
return etu
return etud