From 98b8a0a95af9788aa0563d25dd471862830c4280 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 8 Mar 2023 22:56:11 +0100 Subject: [PATCH] Ajout balises BUT pour bulletins PDF. Voir # 587 --- app/but/bulletin_but.py | 2 +- app/but/bulletin_but_xml_compat.py | 2 +- app/scodoc/sco_bulletins.py | 36 +++++++++++++++++---- app/scodoc/sco_bulletins_json.py | 2 +- app/scodoc/sco_bulletins_xml.py | 2 +- app/scodoc/sco_formsemestre_inscriptions.py | 2 +- app/scodoc/sco_page_etud.py | 3 +- 7 files changed, 36 insertions(+), 13 deletions(-) diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index 9f0a9b85c..ca0c4ead3 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -501,7 +501,7 @@ class BulletinBUT: # --- Decision Jury infos, dpv = sco_bulletins.etud_descr_situation_semestre( etud.id, - self.res.formsemestre.id, + self.res.formsemestre, format="html", show_date_inscr=self.prefs["bul_show_date_inscr"], show_decisions=self.prefs["bul_show_decision"], diff --git a/app/but/bulletin_but_xml_compat.py b/app/but/bulletin_but_xml_compat.py index 98dc97417..74f5409c4 100644 --- a/app/but/bulletin_but_xml_compat.py +++ b/app/but/bulletin_but_xml_compat.py @@ -253,7 +253,7 @@ def bulletin_but_xml_compat( ): infos, dpv = sco_bulletins.etud_descr_situation_semestre( etudid, - formsemestre_id, + formsemestre, format="xml", show_uevalid=sco_preferences.get_preference( "bul_show_uevalid", formsemestre_id diff --git a/app/scodoc/sco_bulletins.py b/app/scodoc/sco_bulletins.py index 3fd15859a..1c1694e04 100644 --- a/app/scodoc/sco_bulletins.py +++ b/app/scodoc/sco_bulletins.py @@ -42,8 +42,15 @@ from app import log from app.scodoc.sco_utils import json_error from app.but import bulletin_but from app.comp import res_sem +from app.comp.res_but import ResultatsSemestreBUT from app.comp.res_compat import NotesTableCompat -from app.models import Formation, FormSemestre, Identite, ModuleImplInscription +from app.models import ( + ApcParcours, + Formation, + FormSemestre, + Identite, + ModuleImplInscription, +) from app.scodoc.sco_permissions import Permission from app.scodoc.sco_exceptions import AccessDenied, ScoValueError from app.scodoc import html_sco_header @@ -194,7 +201,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): # --- Decision Jury infos, dpv = etud_descr_situation_semestre( etudid, - formsemestre_id, + formsemestre, format="html", show_date_inscr=prefs["bul_show_date_inscr"], show_decisions=prefs["bul_show_decision"], @@ -686,7 +693,7 @@ def get_etud_rangs_groups( def etud_descr_situation_semestre( etudid, - formsemestre_id, + formsemestre: FormSemestre, ne="", format="html", # currently unused show_decisions=True, @@ -711,14 +718,13 @@ def etud_descr_situation_semestre( decisions_ue : noms (acronymes) des UE validées, séparées par des virgules. descr_decisions_ue : ' UE acquises: UE1, UE2', ou vide si pas de dec. ou si pas show_uevalid descr_mention : 'Mention Bien', ou vide si pas de mention ou si pas show_mention - descr_parcours : le nom (libelle) du parcours dans lequel est inscrit l'étudiant en BUT (vide ailleurs) + parcours_titre, parcours_code, refcomp_specialite, refcomp_specialite_long """ # Fonction utilisée par tous les bulletins (APC ou classiques) infos = collections.defaultdict(str) # --- Situation et décisions jury - - date_inscr, date_dem, date_def = _dates_insc_dem_def(etudid, formsemestre_id) + date_inscr, date_dem, date_def = _dates_insc_dem_def(etudid, formsemestre.id) if show_date_inscr: if not date_inscr: @@ -733,6 +739,22 @@ def etud_descr_situation_semestre( infos["descr_defaillance"] = "" + # Parcours BUT + infos["parcours_titre"] = "" + infos["parcours_code"] = "" + infos["refcomp_specialite"] = "" + infos["refcomp_specialite_long"] = "" + if formsemestre.formation.is_apc(): + res: ResultatsSemestreBUT = res_sem.load_formsemestre_results(formsemestre) + parcour: ApcParcours = ApcParcours.query.get(res.etuds_parcour_id[etudid]) + if parcour: + infos["parcours_titre"] = parcour.libelle or "" + infos["parcours_code"] = parcour.code or "" + refcomp = parcour.referentiel + if refcomp: + infos["refcomp_specialite"] = refcomp.specialite + infos["refcomp_specialite_long"] = refcomp.specialite_long + # Décision: valeurs par defaut vides: infos["decision_jury"] = infos["descr_decision_jury"] = "" infos["decision_sem"] = "" @@ -753,7 +775,7 @@ def etud_descr_situation_semestre( infos["date_defaillance"] = date_def infos["descr_decision_jury"] = f"Défaillant{ne}" - dpv = sco_pv_dict.dict_pvjury(formsemestre_id, etudids=[etudid]) + dpv = sco_pv_dict.dict_pvjury(formsemestre.id, etudids=[etudid]) if dpv: infos["decision_sem"] = dpv["decisions"][0]["decision_sem"] diff --git a/app/scodoc/sco_bulletins_json.py b/app/scodoc/sco_bulletins_json.py index 2d56eeb07..2239a21bd 100644 --- a/app/scodoc/sco_bulletins_json.py +++ b/app/scodoc/sco_bulletins_json.py @@ -462,7 +462,7 @@ def dict_decision_jury( if prefs["bul_show_decision"] or with_decisions: infos, dpv = sco_bulletins.etud_descr_situation_semestre( etud.id, - formsemestre.id, + formsemestre, show_uevalid=prefs["bul_show_uevalid"], ) d["situation"] = infos["situation"] diff --git a/app/scodoc/sco_bulletins_xml.py b/app/scodoc/sco_bulletins_xml.py index 96591cdbc..923181d25 100644 --- a/app/scodoc/sco_bulletins_xml.py +++ b/app/scodoc/sco_bulletins_xml.py @@ -378,7 +378,7 @@ def make_xml_formsemestre_bulletinetud( ): infos, dpv = sco_bulletins.etud_descr_situation_semestre( etudid, - formsemestre_id, + formsemestre, format="xml", show_uevalid=sco_preferences.get_preference( "bul_show_uevalid", formsemestre_id diff --git a/app/scodoc/sco_formsemestre_inscriptions.py b/app/scodoc/sco_formsemestre_inscriptions.py index 1e993a35f..1d0a25ef2 100644 --- a/app/scodoc/sco_formsemestre_inscriptions.py +++ b/app/scodoc/sco_formsemestre_inscriptions.py @@ -43,7 +43,7 @@ from app.models.validations import ScolarEvent import app.scodoc.sco_utils as scu from app import log from app.scodoc.scolog import logdb -from app.scodoc.sco_exceptions import ScoException, ScoValueError +from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.codes_cursus import UE_STANDARD, UE_SPORT, UE_TYPE_NAME import app.scodoc.notesdb as ndb from app.scodoc.TrivialFormulator import TrivialFormulator diff --git a/app/scodoc/sco_page_etud.py b/app/scodoc/sco_page_etud.py index d821746c8..218d459da 100644 --- a/app/scodoc/sco_page_etud.py +++ b/app/scodoc/sco_page_etud.py @@ -239,9 +239,10 @@ def ficheEtud(etudid=None): sem_info = {} for sem in info["sems"]: if sem["ins"]["etat"] != scu.INSCRIT: + formsemestre: FormSemestre = FormSemestre.query.get(sem["formsemestre_id"]) descr, _ = etud_descr_situation_semestre( etudid, - sem["formsemestre_id"], + formsemestre, info["ne"], show_date_inscr=False, )