forked from ScoDoc/ScoDoc
Fix: evaluation completes en présence de DEM ou DEF
This commit is contained in:
parent
3ef1f155b7
commit
8bccdd3ae2
@ -66,7 +66,7 @@ class ModuleImplResults:
|
||||
self.moduleimpl_id = moduleimpl.id
|
||||
self.module_id = moduleimpl.module.id
|
||||
self.etudids = None
|
||||
"liste des étudiants inscrits au SEMESTRE"
|
||||
"liste des étudiants inscrits au SEMESTRE (incluant dem et def)"
|
||||
|
||||
self.nb_inscrits_module = None
|
||||
"nombre d'inscrits (non DEM) à ce module"
|
||||
@ -120,7 +120,7 @@ class ModuleImplResults:
|
||||
# --- Calcul nombre d'inscrits pour déterminer les évaluations "completes":
|
||||
# on prend les inscrits au module ET au semestre (donc sans démissionnaires)
|
||||
inscrits_module = {ins.etud.id for ins in moduleimpl.inscriptions}.intersection(
|
||||
self.etudids
|
||||
moduleimpl.formsemestre.etudids_actifs
|
||||
)
|
||||
self.nb_inscrits_module = len(inscrits_module)
|
||||
|
||||
@ -128,14 +128,14 @@ class ModuleImplResults:
|
||||
evals_notes = pd.DataFrame(index=self.etudids, dtype=float)
|
||||
self.evaluations_completes = []
|
||||
self.evaluations_completes_dict = {}
|
||||
|
||||
for evaluation in moduleimpl.evaluations:
|
||||
eval_df = self._load_evaluation_notes(evaluation)
|
||||
# is_complete ssi tous les inscrits (non dem) au semestre ont une note
|
||||
# ou évaluaton déclarée "à prise en compte immédiate"
|
||||
is_complete = (
|
||||
len(set(eval_df.index).intersection(self.etudids))
|
||||
== self.nb_inscrits_module
|
||||
) or evaluation.publish_incomplete # immédiate
|
||||
# ou évaluation déclarée "à prise en compte immédiate"
|
||||
is_complete = evaluation.publish_incomplete or (
|
||||
not (inscrits_module - set(eval_df.index))
|
||||
)
|
||||
self.evaluations_completes.append(is_complete)
|
||||
self.evaluations_completes_dict[evaluation.id] = is_complete
|
||||
|
||||
|
@ -313,6 +313,11 @@ class FormSemestre(db.Model):
|
||||
else:
|
||||
return [ins.etud for ins in self.inscriptions if ins.etat == scu.INSCRIT]
|
||||
|
||||
@cached_property
|
||||
def etudids_actifs(self) -> set:
|
||||
"Set des etudids inscrits non démissionnaires"
|
||||
return {ins.etudid for ins in self.inscriptions if ins.etat == scu.INSCRIT}
|
||||
|
||||
@cached_property
|
||||
def etuds_inscriptions(self) -> dict:
|
||||
"""Map { etudid : inscription } (incluant DEM et DEF)"""
|
||||
|
Loading…
Reference in New Issue
Block a user