forked from ScoDoc/ScoDoc
Fix: evaluation completes avec démissionnaires. Fixes #227
This commit is contained in:
parent
ef8e9b4ef0
commit
d89d1be041
@ -112,15 +112,20 @@ def df_load_modimpl_notes(moduleimpl_id: int) -> tuple:
|
|||||||
N'utilise pas de cache ScoDoc.
|
N'utilise pas de cache ScoDoc.
|
||||||
"""
|
"""
|
||||||
# L'index du dataframe est la liste des étudiants inscrits au semestre, sans les démissionnaires
|
# L'index du dataframe est la liste des étudiants inscrits au semestre, sans les démissionnaires
|
||||||
etudids = [
|
etudids = {
|
||||||
e.etudid
|
e.etudid
|
||||||
for e in ModuleImpl.query.get(moduleimpl_id).formsemestre.get_inscrits(
|
for e in ModuleImpl.query.get(moduleimpl_id).formsemestre.get_inscrits(
|
||||||
include_dem=False
|
include_dem=False
|
||||||
)
|
)
|
||||||
]
|
}
|
||||||
evaluations = Evaluation.query.filter_by(moduleimpl_id=moduleimpl_id).all()
|
evaluations = Evaluation.query.filter_by(moduleimpl_id=moduleimpl_id).all()
|
||||||
|
# --- Calcul nombre d'inscrits pour détermnier si évaluation "complete":
|
||||||
if evaluations:
|
if evaluations:
|
||||||
nb_inscrits_module = len(evaluations[0].moduleimpl.inscriptions)
|
# on prend les inscrits au module ET au semestre (donc sans démissionnaires)
|
||||||
|
inscrits_module = {
|
||||||
|
ins.etud.id for ins in evaluations[0].moduleimpl.inscriptions
|
||||||
|
}.intersection(etudids)
|
||||||
|
nb_inscrits_module = len(inscrits_module)
|
||||||
else:
|
else:
|
||||||
nb_inscrits_module = 0
|
nb_inscrits_module = 0
|
||||||
evals_notes = pd.DataFrame(index=etudids, dtype=float) # empty df with all students
|
evals_notes = pd.DataFrame(index=etudids, dtype=float) # empty df with all students
|
||||||
@ -139,11 +144,12 @@ def df_load_modimpl_notes(moduleimpl_id: int) -> tuple:
|
|||||||
"moduleimpl_id": evaluation.moduleimpl.id,
|
"moduleimpl_id": evaluation.moduleimpl.id,
|
||||||
},
|
},
|
||||||
index_col="etudid",
|
index_col="etudid",
|
||||||
dtype=np.float64,
|
|
||||||
)
|
)
|
||||||
|
eval_df[str(evaluation.id)] = pd.to_numeric(eval_df[str(evaluation.id)])
|
||||||
|
# is_complete ssi tous les inscrits (non dem) au semestre ont une note
|
||||||
is_complete = (
|
is_complete = (
|
||||||
len(eval_df) == nb_inscrits_module or evaluation.publish_incomplete
|
len(set(eval_df.index).intersection(etudids)) == nb_inscrits_module
|
||||||
)
|
) or evaluation.publish_incomplete
|
||||||
evaluations_completes.append(is_complete)
|
evaluations_completes.append(is_complete)
|
||||||
# NULL en base => ABS (= -999)
|
# NULL en base => ABS (= -999)
|
||||||
eval_df.fillna(scu.NOTES_ABSENCE, inplace=True)
|
eval_df.fillna(scu.NOTES_ABSENCE, inplace=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user