diff --git a/app/api/etudiants.py b/app/api/etudiants.py index df9b713f0..abf951756 100644 --- a/app/api/etudiants.py +++ b/app/api/etudiants.py @@ -8,51 +8,12 @@ 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.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.sco_permissions import Permission -@bp.route("/etudiants", methods=["GET"]) -@token_permission_required(Permission.APIView) -def etudiants(): - """ - Retourne la liste de tous les étudiants - - Exemple de résultat : - { - "civilite": "X", - "code_ine": null, - "code_nip": null, - "date_naissance": null, - "email": null, - "emailperso": null, - "etudid": 18, - "nom": "MOREL", - "prenom": "JACQUES" - }, - { - "civilite": "X", - "code_ine": null, - "code_nip": null, - "date_naissance": null, - "email": null, - "emailperso": null, - "etudid": 19, - "nom": "FOURNIER", - "prenom": "ANNE" - }, - ... - """ - # Récupération de tous les étudiants - etu = models.Identite.query.all() - - # Mise en forme des données - data = [d.to_dict_bul(include_urls=False) for d in etu] - - return jsonify(data) - - @bp.route("/etudiants/courant", methods=["GET"]) @token_permission_required(Permission.APIView) def etudiants_courant(): @@ -85,13 +46,13 @@ def etudiants_courant(): ... """ # Récupération de tous les étudiants - etus = models.Identite.query.all() + etus = 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()) - data = [] - # Récupère uniquement les étudiants courant - for etu in etus: - if etu.inscription_courante() is not None: - data.append(etu.to_dict_bul(include_urls=False)) + data = [etu.to_dict_bul(include_urls=False) for etu in etus] return jsonify(data) @@ -190,7 +151,7 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None) for formsemestre_inscription in formsemestres_inscriptions: res = models.FormSemestre.query.filter_by( id=formsemestre_inscription.formsemestre_id - ).first() + ).first_or_404() formsemestres.append(res) data = [] @@ -227,25 +188,23 @@ 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() + formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first_or_404() - dept = models.Departement.query.filter_by(id=formsemestre.dept_id).first() + dept = models.Departement.query.filter_by(id=formsemestre.dept_id).first_or_404() app.set_sco_dept(dept.acronym) - if etudid is None: - # Récupération de l'étudiant - try: - etu = get_etu_from_request(etudid, nip, ine) - etudid = etu.etudid - 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", - ) + # Récupération de l'étudiant + try: + etu = get_etu_from_request(etudid, nip, ine) + 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", + ) - return make_json_formsemestre_bulletinetud(formsemestre_id, etudid) + return get_formsemestre_bulletin_etud_json(formsemestre, etu) @bp.route( @@ -311,7 +270,7 @@ def etudiant_groups( ) # 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_or_404() try: # Utilisation de la fonction get_etud_groups data = get_etud_groups(etudid, sem.id)