forked from ScoDoc/ScoDoc
Tableaux recap: corrige nb UE validables en BUT selon parcours. Fix #987
This commit is contained in:
parent
495aac82ae
commit
faf09af63c
@ -260,6 +260,7 @@ def formsemestre_recapcomplet(
|
||||
<div><tt>=</tt></div><div>UE dispensée</div>
|
||||
<div><tt>nan</tt></div><div>valeur non disponible</div>
|
||||
<div>📍</div><div>code jury non enregistré</div>
|
||||
<div><span class="ue_hors_parcours">12.34</span></div><div>UE hors parcours</div>
|
||||
</div>
|
||||
</div>
|
||||
"""
|
||||
|
@ -4636,6 +4636,14 @@ table.table_recap tr.selected td.moy_ue_warning {
|
||||
color: rgb(255, 0, 0);
|
||||
}
|
||||
|
||||
table.table_recap td.ue_hors_parcours a,
|
||||
table.table_recap tr.selected td.ue_hors_parcours a,
|
||||
span.ue_hors_parcours {
|
||||
color: purple;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.table_recap td.cap table.table_recap td.col_ues_validables {
|
||||
white-space: nowrap;
|
||||
font-style: normal !important;
|
||||
|
@ -666,11 +666,21 @@ class RowRecap(tb.Row):
|
||||
if res.is_apc
|
||||
else "Moyenne générale du semestre"
|
||||
)
|
||||
self.add_ues_cols(ues_sans_bonus)
|
||||
|
||||
# --- Moyenne d'UE
|
||||
def add_ues_cols(self, ues_sans_bonus: list[UniteEns]):
|
||||
"""Ajout des colonnes concernant les UEs
|
||||
- pour chaque UE :
|
||||
- sa moyenne (et son code en mode jury)
|
||||
- les moyennes de modules dans l'UE
|
||||
- la colonne UEs avec le nombre d'UEs validables
|
||||
"""
|
||||
etudid = self.etud.id
|
||||
table: TableRecap = self.table
|
||||
res = table.res
|
||||
self.nb_ues_validables, self.nb_ues_warning = 0, 0
|
||||
for ue in ues_sans_bonus:
|
||||
ue_status = res.get_etud_ue_status(etud.id, ue.id)
|
||||
ue_status = res.get_etud_ue_status(etudid, ue.id)
|
||||
if ue_status is not None:
|
||||
self.add_ue_cols(ue, ue_status)
|
||||
if table.mode_jury:
|
||||
@ -679,7 +689,7 @@ class RowRecap(tb.Row):
|
||||
# Bonus (sport) dans cette UE ?
|
||||
# Le bonus sport appliqué sur cette UE
|
||||
if (res.bonus_ues is not None) and (ue.id in res.bonus_ues):
|
||||
val = res.bonus_ues[ue.id][etud.id] or ""
|
||||
val = res.bonus_ues[ue.id][etudid] or ""
|
||||
val_fmt = val_fmt_html = table.fmt_note(val)
|
||||
if val:
|
||||
val_fmt_html = f"""<span class="green-arrow-up"></span><span class="sp2l">{
|
||||
@ -696,7 +706,7 @@ class RowRecap(tb.Row):
|
||||
# Les moyennes des modules (ou ressources et SAÉs) dans cette UE
|
||||
self.add_ue_modimpls_cols(ue, ue_status["is_capitalized"])
|
||||
|
||||
self.nb_ues_etud_parcours = len(res.etud_parcours_ues_ids(etud.id))
|
||||
self.nb_ues_etud_parcours = len(res.etud_parcours_ues_ids(etudid))
|
||||
ue_valid_txt = ue_valid_txt_html = (
|
||||
f"{self.nb_ues_validables}/{self.nb_ues_etud_parcours}"
|
||||
)
|
||||
@ -705,7 +715,7 @@ class RowRecap(tb.Row):
|
||||
cell_class = ""
|
||||
if self.nb_ues_warning:
|
||||
cell_class = "moy_ue_warning"
|
||||
elif self.nb_ues_validables < len(ues_sans_bonus):
|
||||
elif self.nb_ues_validables < self.nb_ues_etud_parcours: # len(ues_sans_bonus):
|
||||
cell_class = "moy_inf"
|
||||
self.add_cell(
|
||||
"ues_validables",
|
||||
@ -719,7 +729,7 @@ class RowRecap(tb.Row):
|
||||
)
|
||||
|
||||
def add_ue_cols(self, ue: UniteEns, ue_status: dict, col_group: str = None):
|
||||
"Ajoute résultat UE au row (colonne col_ue)"
|
||||
"Ajoute résultat d'une UE au row (colonne col_ue)"
|
||||
# sous-classé par JuryRow pour ajouter les codes
|
||||
table: TableRecap = self.table
|
||||
formsemestre: FormSemestre = table.res.formsemestre
|
||||
@ -732,26 +742,36 @@ class RowRecap(tb.Row):
|
||||
if (self.etud.id, ue.id) not in table.res.dispense_ues
|
||||
else "="
|
||||
)
|
||||
note_classes = []
|
||||
cell_classes = []
|
||||
# Cette UE est-elle dans le parcours de l'étudiant (dans ce semestre) ?
|
||||
ue_hors_parcours = ue.id not in self.table.res.etud_parcours_ues_ids(
|
||||
self.etud.id
|
||||
)
|
||||
|
||||
target_attrs = {} # pour décorer la cellule (bulle)
|
||||
if isinstance(val, float):
|
||||
if val < table.barre_moy:
|
||||
note_classes = ["moy_inf"]
|
||||
cell_classes = ["moy_inf"]
|
||||
elif val >= table.barre_valid_ue:
|
||||
note_classes = ["moy_ue_valid"]
|
||||
cell_classes = ["moy_ue_valid"]
|
||||
if not ue_hors_parcours:
|
||||
self.nb_ues_validables += 1
|
||||
if val < table.barre_warning_ue:
|
||||
note_classes = ["moy_ue_warning"] # notes très basses
|
||||
cell_classes = ["moy_ue_warning"] # notes très basses
|
||||
self.nb_ues_warning += 1
|
||||
if ue_status["is_capitalized"]:
|
||||
note_classes.append("ue_capitalized")
|
||||
|
||||
cell_classes.append("ue_capitalized")
|
||||
if ue_hors_parcours:
|
||||
cell_classes.append("ue_hors_parcours")
|
||||
target_attrs["title"] = "UE hors du parcours actuel de l'étudiant"
|
||||
self.add_cell(
|
||||
col_id,
|
||||
ue.acronyme,
|
||||
table.fmt_note(val),
|
||||
group=col_group or f"col_ue_{ue.id}",
|
||||
classes=note_classes,
|
||||
classes=cell_classes,
|
||||
column_classes={f"col_ue_{ue.id}", "col_moy_ue", "col_ue"},
|
||||
target_attrs=target_attrs,
|
||||
)
|
||||
table.foot_title_row.cells[col_id].target_attrs[
|
||||
"title"
|
||||
|
Loading…
Reference in New Issue
Block a user