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