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>=</tt></div><div>UE dispensée</div>
|
||||||
<div><tt>nan</tt></div><div>valeur non disponible</div>
|
<div><tt>nan</tt></div><div>valeur non disponible</div>
|
||||||
<div>📍</div><div>code jury non enregistré</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>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
|
@ -4636,6 +4636,14 @@ table.table_recap tr.selected td.moy_ue_warning {
|
|||||||
color: rgb(255, 0, 0);
|
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 {
|
table.table_recap td.cap table.table_recap td.col_ues_validables {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
font-style: normal !important;
|
font-style: normal !important;
|
||||||
|
@ -666,11 +666,21 @@ class RowRecap(tb.Row):
|
|||||||
if res.is_apc
|
if res.is_apc
|
||||||
else "Moyenne générale du semestre"
|
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
|
self.nb_ues_validables, self.nb_ues_warning = 0, 0
|
||||||
for ue in ues_sans_bonus:
|
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:
|
if ue_status is not None:
|
||||||
self.add_ue_cols(ue, ue_status)
|
self.add_ue_cols(ue, ue_status)
|
||||||
if table.mode_jury:
|
if table.mode_jury:
|
||||||
@ -679,7 +689,7 @@ class RowRecap(tb.Row):
|
|||||||
# Bonus (sport) dans cette UE ?
|
# Bonus (sport) dans cette UE ?
|
||||||
# Le bonus sport appliqué sur cette UE
|
# Le bonus sport appliqué sur cette UE
|
||||||
if (res.bonus_ues is not None) and (ue.id in res.bonus_ues):
|
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)
|
val_fmt = val_fmt_html = table.fmt_note(val)
|
||||||
if val:
|
if val:
|
||||||
val_fmt_html = f"""<span class="green-arrow-up"></span><span class="sp2l">{
|
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
|
# Les moyennes des modules (ou ressources et SAÉs) dans cette UE
|
||||||
self.add_ue_modimpls_cols(ue, ue_status["is_capitalized"])
|
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 = (
|
ue_valid_txt = ue_valid_txt_html = (
|
||||||
f"{self.nb_ues_validables}/{self.nb_ues_etud_parcours}"
|
f"{self.nb_ues_validables}/{self.nb_ues_etud_parcours}"
|
||||||
)
|
)
|
||||||
@ -705,7 +715,7 @@ class RowRecap(tb.Row):
|
|||||||
cell_class = ""
|
cell_class = ""
|
||||||
if self.nb_ues_warning:
|
if self.nb_ues_warning:
|
||||||
cell_class = "moy_ue_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"
|
cell_class = "moy_inf"
|
||||||
self.add_cell(
|
self.add_cell(
|
||||||
"ues_validables",
|
"ues_validables",
|
||||||
@ -719,7 +729,7 @@ class RowRecap(tb.Row):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def add_ue_cols(self, ue: UniteEns, ue_status: dict, col_group: str = None):
|
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
|
# sous-classé par JuryRow pour ajouter les codes
|
||||||
table: TableRecap = self.table
|
table: TableRecap = self.table
|
||||||
formsemestre: FormSemestre = table.res.formsemestre
|
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
|
if (self.etud.id, ue.id) not in table.res.dispense_ues
|
||||||
else "="
|
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 isinstance(val, float):
|
||||||
if val < table.barre_moy:
|
if val < table.barre_moy:
|
||||||
note_classes = ["moy_inf"]
|
cell_classes = ["moy_inf"]
|
||||||
elif val >= table.barre_valid_ue:
|
elif val >= table.barre_valid_ue:
|
||||||
note_classes = ["moy_ue_valid"]
|
cell_classes = ["moy_ue_valid"]
|
||||||
self.nb_ues_validables += 1
|
if not ue_hors_parcours:
|
||||||
|
self.nb_ues_validables += 1
|
||||||
if val < table.barre_warning_ue:
|
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
|
self.nb_ues_warning += 1
|
||||||
if ue_status["is_capitalized"]:
|
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(
|
self.add_cell(
|
||||||
col_id,
|
col_id,
|
||||||
ue.acronyme,
|
ue.acronyme,
|
||||||
table.fmt_note(val),
|
table.fmt_note(val),
|
||||||
group=col_group or f"col_ue_{ue.id}",
|
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"},
|
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[
|
table.foot_title_row.cells[col_id].target_attrs[
|
||||||
"title"
|
"title"
|
||||||
|
Loading…
Reference in New Issue
Block a user