From ffcc0897f2bbf4e5f7c4f6fbeaa99c6a18a0180e Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Mon, 16 May 2022 15:45:11 +0200 Subject: [PATCH] =?UTF-8?q?mise=20=C3=A0=20jour=20de=20la=20fonction=20ren?= =?UTF-8?q?voyant=20un=20=C3=A9tudiant=20suivant=20son=20etudid,=20nip=20o?= =?UTF-8?q?u=20ine=20pour=20renvoyer=20la=20derni=C3=A8re=20instance=20de?= =?UTF-8?q?=20celui=20si?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/etudiants.py | 23 ++--------------------- app/api/tools.py | 38 ++++++++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/app/api/etudiants.py b/app/api/etudiants.py index 76dd23470..e53056f1a 100644 --- a/app/api/etudiants.py +++ b/app/api/etudiants.py @@ -14,6 +14,7 @@ import app 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_last_instance_etud_from_etudid_or_nip_or_ine from app.models import Departement, FormSemestreInscription, FormSemestre, Identite from app.scodoc import sco_bulletins from app.scodoc import sco_groups @@ -104,27 +105,7 @@ def etudiant(etudid: int = None, nip: str = None, ine: str = None): "description": "" } """ - if etudid is not None: - etud = Identite.query.get(etudid) - else: - if nip is not None: - query = Identite.query.filter_by(code_nip=nip) - elif ine is not None: - query = Identite.query.filter_by(code_ine=ine) - else: - return error_response( - 404, - message="parametre manquant", - ) - if query.count() > 1: # cas rare d'un étudiant présent dans plusieurs depts - etuds = [] - for e in query: - admission = e.admission.first() - etuds.append((((admission.annee or 0) if admission else 0), e)) - etuds.sort() - etud = etuds[-1][1] - else: - etud = query.first() + etud = get_last_instance_etud_from_etudid_or_nip_or_ine(etudid, nip, ine) if etud is None: return error_response( diff --git a/app/api/tools.py b/app/api/tools.py index 72e98a3cc..462a5cbf8 100644 --- a/app/api/tools.py +++ b/app/api/tools.py @@ -1,11 +1,14 @@ from app import models -### TODO Faire en sorte de renvoyer l'étudiant qui a son inscription la plus récente -def get_etud_from_etudid_or_nip_or_ine( +from app.api.errors import error_response +from app.models import Identite + + +def get_last_instance_etud_from_etudid_or_nip_or_ine( etudid=None, nip=None, ine=None ) -> models.Identite: """ - etudiant en fonction de l'etudid, code nip et code ine rentré en paramètres + Retourne l'instance de l'etudiant la plus récente 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 @@ -13,12 +16,27 @@ def get_etud_from_etudid_or_nip_or_ine( Return None si étudiant inexistant. """ - if etudid is None: - if nip is None: # si ine - etud = models.Identite.query.filter_by(code_ine=str(ine)).first() - else: # si nip - etud = models.Identite.query.filter_by(code_nip=str(nip)).first() - else: # si etudid - etud = models.Identite.query.filter_by(id=etudid).first() + if etudid is not None: + etud = Identite.query.get(etudid) + else: + if nip is not None: + query = Identite.query.filter_by(code_nip=nip) + elif ine is not None: + query = Identite.query.filter_by(code_ine=ine) + else: + return error_response( + 404, + message="parametre manquant", + ) + if query.count() > 1: # cas rare d'un étudiant présent dans plusieurs depts + etuds = [] + for e in query: + admission = e.admission.first() + etuds.append((((admission.annee or 0) if admission else 0), e)) + etuds.sort() + etud = etuds[-1][1] + else: + etud = query.first() return etud +