1
0
forked from ScoDoc/ScoDoc

Ajout UE capitalisées au bulletin BUT json

This commit is contained in:
Emmanuel Viennet 2022-09-04 11:20:25 +02:00
parent ffa5190a49
commit 939c2ccf36
4 changed files with 38 additions and 4 deletions

View File

@ -19,6 +19,7 @@ from app.models.ues import UniteEns
from app.scodoc import sco_bulletins, sco_utils as scu from app.scodoc import sco_bulletins, sco_utils as scu
from app.scodoc import sco_bulletins_json from app.scodoc import sco_bulletins_json
from app.scodoc import sco_bulletins_pdf from app.scodoc import sco_bulletins_pdf
from app.scodoc import sco_codes_parcours
from app.scodoc import sco_groups from app.scodoc import sco_groups
from app.scodoc import sco_preferences from app.scodoc import sco_preferences
from app.scodoc.sco_codes_parcours import UE_SPORT, DEF from app.scodoc.sco_codes_parcours import UE_SPORT, DEF
@ -137,6 +138,37 @@ class BulletinBUT:
d["modules"] = self.etud_mods_results(etud, modimpls_spo) d["modules"] = self.etud_mods_results(etud, modimpls_spo)
return d return d
def etud_ues_capitalisees(self, etud: Identite) -> dict:
"""dict avec les UE capitalisees. la clé est l'acronyme d'UE, qui ne
peut donc être capitalisée qu'une seule fois (on prend la meilleure)"""
if not etud.id in self.res.validations.ue_capitalisees:
return {} # aucune capitalisation
d = {}
for _, ue_capitalisee in self.res.validations.ue_capitalisees.loc[
etud.id
].iterrows():
if sco_codes_parcours.code_ue_validant(ue_capitalisee.code):
ue = UniteEns.query.get(ue_capitalisee.ue_id) # XXX cacher ?
# déjà capitalisé ? montre la meilleure
if (ue.acronyme in d) and (
(ue_capitalisee.moy_ue or 0.0) < (d[ue.acronyme]["moyenne"] or 0.0)
):
continue # skip this duplicate UE
d[ue.acronyme] = {
"id": ue.id,
"ue_code": ue_capitalisee.ue_code,
"titre": ue.titre,
"numero": ue.numero,
"type": ue.type,
"color": ue.color,
"moyenne": ue_capitalisee.moy_ue,
"is_external": ue_capitalisee.is_external,
"date_capitalisation": ue_capitalisee.event_date,
"formsemestre_id": ue_capitalisee.formsemestre_id,
}
return d
def etud_mods_results(self, etud, modimpls, version="long") -> dict: def etud_mods_results(self, etud, modimpls, version="long") -> dict:
"""dict synthèse résultats des modules indiqués, """dict synthèse résultats des modules indiqués,
avec évaluations de chacun (sauf si version == "short") avec évaluations de chacun (sauf si version == "short")
@ -377,9 +409,11 @@ class BulletinBUT:
# si l'UE comporte des modules auxquels on est inscrit: # si l'UE comporte des modules auxquels on est inscrit:
if ((ue.type == UE_SPORT) or ue.id in etud_ues_ids) if ((ue.type == UE_SPORT) or ue.id in etud_ues_ids)
}, },
"ues_capitalisees": self.etud_ues_capitalisees(etud),
"semestre": semestre_infos, "semestre": semestre_infos,
}, },
) )
else: else:
semestre_infos.update( semestre_infos.update(
{ {

View File

@ -39,8 +39,9 @@ class ValidationsSemestre(ResultatsCache):
formsemestre_id : origine de l'UE capitalisée formsemestre_id : origine de l'UE capitalisée
is_external : vrai si validation effectuée dans un semestre extérieur is_external : vrai si validation effectuée dans un semestre extérieur
ue_id : dans le semestre origine (pas toujours de la même formation) ue_id : dans le semestre origine (pas toujours de la même formation)
ue_code : code de l'UE, moy_ue : note enregistrée, ue_code : code de l'UE
event_date : date de la validation (jury).""" moy_ue : note enregistrée
event_date : date de la validation (jury)"""
if not self.load_cached(): if not self.load_cached():
self.compute() self.compute()

View File

@ -6,7 +6,6 @@
"""Résultats semestres BUT """Résultats semestres BUT
""" """
from re import U
import time import time
import numpy as np import numpy as np
import pandas as pd import pandas as pd

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.3.31" SCOVERSION = "9.3.32"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"