From 08686225112b815df5c62836bbedf2bc2d45b958 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Fri, 11 Aug 2023 18:44:51 +0200 Subject: [PATCH] =?UTF-8?q?API:=20/formsemestres/query=20et=20/formsemestr?= =?UTF-8?q?es=5Fcourants=20:=20ajout=20tri=20r=C3=A9sultat.=20Ajout=20para?= =?UTF-8?q?m=C3=A8tre=20etat=20au=20query.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/departements.py | 10 +++++++++- app/api/formsemestres.py | 20 ++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/api/departements.py b/app/api/departements.py index a5d87bb5..95a9c4e9 100644 --- a/app/api/departements.py +++ b/app/api/departements.py @@ -281,7 +281,15 @@ def dept_formsemestres_courants(acronym: str): FormSemestre.date_debut <= test_date, FormSemestre.date_fin >= test_date, ) - return [d.to_dict_api() for d in formsemestres] + return [ + d.to_dict_api() + for d in formsemestres.order_by( + FormSemestre.date_debut.desc(), + FormSemestre.modalite, + FormSemestre.semestre_id, + FormSemestre.titre, + ) + ] @bp.route("/departement/id//formsemestres_courants") diff --git a/app/api/formsemestres.py b/app/api/formsemestres.py index 18b98738..d4954566 100644 --- a/app/api/formsemestres.py +++ b/app/api/formsemestres.py @@ -99,18 +99,20 @@ def formsemestre_infos(formsemestre_id: int): def formsemestres_query(): """ Retourne les formsemestres filtrés par - étape Apogée ou année scolaire ou département (acronyme ou id) + étape Apogée ou année scolaire ou département (acronyme ou id) ou état ou code étudiant etape_apo : un code étape apogée annee_scolaire : année de début de l'année scolaire dept_acronym : acronyme du département (eg "RT") dept_id : id du département ine ou nip: code d'un étudiant: ramène alors tous les semestres auxquels il est inscrit. + etat: 0 si verrouillé, 1 sinon """ etape_apo = request.args.get("etape_apo") annee_scolaire = request.args.get("annee_scolaire") dept_acronym = request.args.get("dept_acronym") dept_id = request.args.get("dept_id") + etat = request.args.get("etat") nip = request.args.get("nip") ine = request.args.get("ine") formsemestres = FormSemestre.query @@ -126,6 +128,12 @@ def formsemestres_query(): formsemestres = formsemestres.filter( FormSemestre.date_fin >= debut_annee, FormSemestre.date_debut <= fin_annee ) + if etat is not None: + try: + etat = bool(int(etat)) + except ValueError: + return json_error(404, "invalid etat: integer expected") + formsemestres = formsemestres.filter_by(etat=etat) if dept_acronym is not None: formsemestres = formsemestres.join(Departement).filter_by(acronym=dept_acronym) if dept_id is not None: @@ -151,7 +159,15 @@ def formsemestres_query(): formsemestres = formsemestres.join(FormSemestreInscription).join(Identite) formsemestres = formsemestres.filter_by(code_ine=ine) - return [formsemestre.to_dict_api() for formsemestre in formsemestres] + return [ + formsemestre.to_dict_api() + for formsemestre in formsemestres.order_by( + FormSemestre.date_debut.desc(), + FormSemestre.modalite, + FormSemestre.semestre_id, + FormSemestre.titre, + ) + ] @bp.route("/formsemestre//bulletins")