forked from ScoDoc/ScoDoc
Fix: Bulletin BUT: calcul des UE de chaque etud
This commit is contained in:
parent
29c2fb25e8
commit
060b7ad7cd
@ -244,7 +244,7 @@ class BulletinBUT:
|
|||||||
f"{fmt_note(bonus_vect[ue.id])} sur {ue.acronyme}"
|
f"{fmt_note(bonus_vect[ue.id])} sur {ue.acronyme}"
|
||||||
for ue in res.ues
|
for ue in res.ues
|
||||||
if ue.type != UE_SPORT
|
if ue.type != UE_SPORT
|
||||||
and res.modimpls_in_ue(ue.id, etudid)
|
and res.modimpls_in_ue(ue, etudid)
|
||||||
and ue.id in res.bonus_ues
|
and ue.id in res.bonus_ues
|
||||||
and bonus_vect[ue.id] > 0.0
|
and bonus_vect[ue.id] > 0.0
|
||||||
]
|
]
|
||||||
@ -275,9 +275,7 @@ class BulletinBUT:
|
|||||||
nb_inscrits = self.res.get_inscriptions_counts()[scu.INSCRIT]
|
nb_inscrits = self.res.get_inscriptions_counts()[scu.INSCRIT]
|
||||||
published = (not formsemestre.bul_hide_xml) or force_publishing
|
published = (not formsemestre.bul_hide_xml) or force_publishing
|
||||||
if formsemestre.formation.referentiel_competence is None:
|
if formsemestre.formation.referentiel_competence is None:
|
||||||
etud_ues_ids = {
|
etud_ues_ids = {ue.id for ue in res.ues if res.modimpls_in_ue(ue, etud.id)}
|
||||||
ue.id for ue in res.ues if res.modimpls_in_ue(ue.id, etud.id)
|
|
||||||
}
|
|
||||||
else:
|
else:
|
||||||
etud_ues_ids = res.etud_ues_ids(etud.id)
|
etud_ues_ids = res.etud_ues_ids(etud.id)
|
||||||
|
|
||||||
|
@ -157,16 +157,24 @@ class ResultatsSemestreBUT(NotesTableCompat):
|
|||||||
"""
|
"""
|
||||||
return self.modimpl_coefs_df.loc[ue.id].sum()
|
return self.modimpl_coefs_df.loc[ue.id].sum()
|
||||||
|
|
||||||
def modimpls_in_ue(self, ue_id, etudid, with_bonus=True) -> list[ModuleImpl]:
|
def modimpls_in_ue(self, ue: UniteEns, etudid, with_bonus=True) -> list[ModuleImpl]:
|
||||||
"""Liste des modimpl ayant des coefs non nuls vers cette UE
|
"""Liste des modimpl ayant des coefs non nuls vers cette UE
|
||||||
et auxquels l'étudiant est inscrit. Inclus modules bonus le cas échéant.
|
et auxquels l'étudiant est inscrit. Inclus modules bonus le cas échéant.
|
||||||
"""
|
"""
|
||||||
# sert pour l'affichage ou non de l'UE sur le bulletin et la table recap
|
# sert pour l'affichage ou non de l'UE sur le bulletin et la table recap
|
||||||
coefs = self.modimpl_coefs_df # row UE, cols modimpl
|
if ue.type == UE_SPORT:
|
||||||
|
return [
|
||||||
|
modimpl
|
||||||
|
for modimpl in self.formsemestre.modimpls_sorted
|
||||||
|
if modimpl.module.ue.id == ue.id
|
||||||
|
and self.modimpl_inscr_df[modimpl.id][etudid]
|
||||||
|
]
|
||||||
|
coefs = self.modimpl_coefs_df # row UE (sans bonus), cols modimpl
|
||||||
modimpls = [
|
modimpls = [
|
||||||
modimpl
|
modimpl
|
||||||
for modimpl in self.formsemestre.modimpls_sorted
|
for modimpl in self.formsemestre.modimpls_sorted
|
||||||
if (coefs[modimpl.id][ue_id] != 0)
|
if modimpl.module.ue.type != UE_SPORT
|
||||||
|
and (coefs[modimpl.id][ue.id] != 0)
|
||||||
and self.modimpl_inscr_df[modimpl.id][etudid]
|
and self.modimpl_inscr_df[modimpl.id][etudid]
|
||||||
]
|
]
|
||||||
if not with_bonus:
|
if not with_bonus:
|
||||||
|
@ -187,7 +187,7 @@ class ResultatsSemestre(ResultatsCache):
|
|||||||
ues = sorted(list(ues), key=lambda x: x.numero or 0)
|
ues = sorted(list(ues), key=lambda x: x.numero or 0)
|
||||||
return ues
|
return ues
|
||||||
|
|
||||||
def modimpls_in_ue(self, ue_id, etudid, with_bonus=True) -> list[ModuleImpl]:
|
def modimpls_in_ue(self, ue: UniteEns, etudid, with_bonus=True) -> list[ModuleImpl]:
|
||||||
"""Liste des modimpl de cette UE auxquels l'étudiant est inscrit.
|
"""Liste des modimpl de cette UE auxquels l'étudiant est inscrit.
|
||||||
Utile en formations classiques, surchargée pour le BUT.
|
Utile en formations classiques, surchargée pour le BUT.
|
||||||
Inclus modules bonus le cas échéant.
|
Inclus modules bonus le cas échéant.
|
||||||
@ -197,7 +197,7 @@ class ResultatsSemestre(ResultatsCache):
|
|||||||
modimpls = [
|
modimpls = [
|
||||||
modimpl
|
modimpl
|
||||||
for modimpl in self.formsemestre.modimpls_sorted
|
for modimpl in self.formsemestre.modimpls_sorted
|
||||||
if modimpl.module.ue.id == ue_id
|
if modimpl.module.ue.id == ue.id
|
||||||
and self.modimpl_inscr_df[modimpl.id][etudid]
|
and self.modimpl_inscr_df[modimpl.id][etudid]
|
||||||
]
|
]
|
||||||
if not with_bonus:
|
if not with_bonus:
|
||||||
@ -572,7 +572,7 @@ class ResultatsSemestre(ResultatsCache):
|
|||||||
# Les moyennes des modules (ou ressources et SAÉs) dans cette UE
|
# Les moyennes des modules (ou ressources et SAÉs) dans cette UE
|
||||||
idx_malus = idx # place pour colonne malus à gauche des modules
|
idx_malus = idx # place pour colonne malus à gauche des modules
|
||||||
idx += 1
|
idx += 1
|
||||||
for modimpl in self.modimpls_in_ue(ue.id, etudid, with_bonus=False):
|
for modimpl in self.modimpls_in_ue(ue, etudid, with_bonus=False):
|
||||||
if ue_status["is_capitalized"]:
|
if ue_status["is_capitalized"]:
|
||||||
val = "-c-"
|
val = "-c-"
|
||||||
else:
|
else:
|
||||||
|
@ -283,7 +283,7 @@ class ApcNiveau(db.Model, XMLModel):
|
|||||||
raise ValueError("annee invalide pour un parcours BUT")
|
raise ValueError("annee invalide pour un parcours BUT")
|
||||||
if referentiel_competence is None:
|
if referentiel_competence is None:
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
"pas de référentiel de compétences associé à la formation !"
|
"Pas de référentiel de compétences associé à la formation !"
|
||||||
)
|
)
|
||||||
annee_formation = f"BUT{annee}"
|
annee_formation = f"BUT{annee}"
|
||||||
if parcour is None:
|
if parcour is None:
|
||||||
|
Loading…
Reference in New Issue
Block a user