forked from ScoDoc/ScoDoc
Affichage statut évaluations (attente)
This commit is contained in:
parent
7162d83f39
commit
d5fdd5b8b8
@ -178,11 +178,17 @@ class ModuleImplResults:
|
|||||||
eval_notes_inscr = evals_notes[str(evaluation.id)][list(inscrits_module)]
|
eval_notes_inscr = evals_notes[str(evaluation.id)][list(inscrits_module)]
|
||||||
# Nombre de notes (non vides, incluant ATT etc) des inscrits:
|
# Nombre de notes (non vides, incluant ATT etc) des inscrits:
|
||||||
nb_notes = eval_notes_inscr.notna().sum()
|
nb_notes = eval_notes_inscr.notna().sum()
|
||||||
|
# Etudiants avec notes en attente:
|
||||||
|
# = ceux avec note ATT
|
||||||
eval_etudids_attente = set(
|
eval_etudids_attente = set(
|
||||||
eval_notes_inscr.iloc[
|
eval_notes_inscr.iloc[
|
||||||
(eval_notes_inscr == scu.NOTES_ATTENTE).to_numpy()
|
(eval_notes_inscr == scu.NOTES_ATTENTE).to_numpy()
|
||||||
].index
|
].index
|
||||||
)
|
)
|
||||||
|
if evaluation.publish_incomplete:
|
||||||
|
# et en "imédiat", tous ceux sans note
|
||||||
|
eval_etudids_attente |= etudids_sans_note
|
||||||
|
# Synthèe pour état du module:
|
||||||
self.etudids_attente |= eval_etudids_attente
|
self.etudids_attente |= eval_etudids_attente
|
||||||
self.evaluations_etat[evaluation.id] = EvaluationEtat(
|
self.evaluations_etat[evaluation.id] = EvaluationEtat(
|
||||||
evaluation_id=evaluation.id,
|
evaluation_id=evaluation.id,
|
||||||
@ -190,7 +196,7 @@ class ModuleImplResults:
|
|||||||
nb_notes=nb_notes,
|
nb_notes=nb_notes,
|
||||||
is_complete=is_complete,
|
is_complete=is_complete,
|
||||||
)
|
)
|
||||||
# au moins une note en ATT dans ce modimpl:
|
# au moins une note en attente (ATT ou manquante en mode "immédiat") dans ce modimpl:
|
||||||
self.en_attente = bool(self.etudids_attente)
|
self.en_attente = bool(self.etudids_attente)
|
||||||
|
|
||||||
# Force columns names to integers (evaluation ids)
|
# Force columns names to integers (evaluation ids)
|
||||||
|
@ -280,18 +280,21 @@ def do_evaluation_etat(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _summarize_evals_etats(evals: list[dict]) -> dict:
|
def _summarize_evals_etats(etat_evals: list[dict]) -> dict:
|
||||||
"""Synthétise les états d'une liste d'évaluations
|
"""Synthétise les états d'une liste d'évaluations
|
||||||
evals: list of mappings (etats),
|
evals: list of mappings (etats),
|
||||||
utilise e["etat"]["evalcomplete"], e["etat"]["nb_notes"], e["etat"]["last_modif"]
|
utilise e["etat"]["evalcomplete"], e["etat"]["nb_notes"], e["etat"]["last_modif"]
|
||||||
-> nb_eval_completes, nb_evals_en_cours,
|
->
|
||||||
nb_evals_vides, date derniere modif
|
nb_eval_completes (= prises en compte)
|
||||||
|
nb_evals_en_cours (= avec des notes, mais pas complete)
|
||||||
|
nb_evals_vides (= sans aucune note)
|
||||||
|
date derniere modif
|
||||||
|
|
||||||
Une eval est "complete" ssi tous les etudiants *inscrits* ont une note.
|
Une eval est "complete" ssi tous les etudiants *inscrits* ont une note.
|
||||||
"""
|
"""
|
||||||
nb_evals_completes, nb_evals_en_cours, nb_evals_vides = 0, 0, 0
|
nb_evals_completes, nb_evals_en_cours, nb_evals_vides = 0, 0, 0
|
||||||
dates = []
|
dates = []
|
||||||
for e in evals:
|
for e in etat_evals:
|
||||||
if e["etat"]["evalcomplete"]:
|
if e["etat"]["evalcomplete"]:
|
||||||
nb_evals_completes += 1
|
nb_evals_completes += 1
|
||||||
elif e["etat"]["nb_notes"] == 0:
|
elif e["etat"]["nb_notes"] == 0:
|
||||||
@ -345,8 +348,8 @@ def do_evaluation_etat_in_sem(formsemestre: FormSemestre) -> dict:
|
|||||||
|
|
||||||
def do_evaluation_etat_in_mod(nt, modimpl: ModuleImpl):
|
def do_evaluation_etat_in_mod(nt, modimpl: ModuleImpl):
|
||||||
"""état des évaluations dans ce module"""
|
"""état des évaluations dans ce module"""
|
||||||
evals = nt.get_mod_evaluation_etat_list(modimpl)
|
etat_evals = nt.get_mod_evaluation_etat_list(modimpl)
|
||||||
etat = _summarize_evals_etats(evals)
|
etat = _summarize_evals_etats(etat_evals)
|
||||||
# Il y a-t-il des notes en attente dans ce module ?
|
# Il y a-t-il des notes en attente dans ce module ?
|
||||||
etat["attente"] = nt.modimpls_results[modimpl.id].en_attente
|
etat["attente"] = nt.modimpls_results[modimpl.id].en_attente
|
||||||
return etat
|
return etat
|
||||||
|
@ -1262,6 +1262,7 @@ def formsemestre_tableau_modules(
|
|||||||
etat["nb_evals_completes"] > 0
|
etat["nb_evals_completes"] > 0
|
||||||
and etat["nb_evals_en_cours"] == 0
|
and etat["nb_evals_en_cours"] == 0
|
||||||
and etat["nb_evals_vides"] == 0
|
and etat["nb_evals_vides"] == 0
|
||||||
|
and not etat["attente"]
|
||||||
):
|
):
|
||||||
H.append(f'<tr class="formsemestre_status_green{fontorange}">')
|
H.append(f'<tr class="formsemestre_status_green{fontorange}">')
|
||||||
else:
|
else:
|
||||||
@ -1315,6 +1316,7 @@ def formsemestre_tableau_modules(
|
|||||||
if nb_evals != 0:
|
if nb_evals != 0:
|
||||||
H.append(
|
H.append(
|
||||||
f"""<a href="{moduleimpl_status_url}"
|
f"""<a href="{moduleimpl_status_url}"
|
||||||
|
title="les évaluations 'ok' sont celles prises en compte dans les calculs"
|
||||||
class="formsemestre_status_link">{nb_evals} prévues,
|
class="formsemestre_status_link">{nb_evals} prévues,
|
||||||
{etat["nb_evals_completes"]} ok</a>"""
|
{etat["nb_evals_completes"]} ok</a>"""
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user