forked from ScoDoc/ScoDoc
amélioration liste_notes: ignore démissionnaires dans moy. de groupes
This commit is contained in:
parent
41778d5918
commit
d9f87d8528
@ -401,7 +401,7 @@ class FormSemestre(db.Model):
|
||||
|
||||
@cached_property
|
||||
def etudids_actifs(self) -> set:
|
||||
"Set des etudids inscrits non démissionnaires"
|
||||
"Set des etudids inscrits non démissionnaires et non défaillants"
|
||||
return {ins.etudid for ins in self.inscriptions if ins.etat == scu.INSCRIT}
|
||||
|
||||
@cached_property
|
||||
|
@ -597,13 +597,14 @@ def _make_table_notes(
|
||||
if not e["eval_state"]["evalcomplete"]:
|
||||
all_complete = False
|
||||
if all_complete:
|
||||
eval_info = '<span class="eval_info eval_complete">Evaluations prises en compte dans les moyennes</span>'
|
||||
eval_info = '<span class="eval_info"><span class="eval_complete">Evaluations prises en compte dans les moyennes.</span>'
|
||||
else:
|
||||
eval_info = """<span class="eval_info help">
|
||||
Les évaluations en vert et orange sont prises en compte dans les moyennes.
|
||||
Celles en rouge n'ont pas toutes leurs notes."""
|
||||
if is_apc:
|
||||
eval_info += " La moyenne indicative est la moyenne des moyennes d'UE, et n'est pas utilisée en BUT."
|
||||
eval_info += """ <span>La moyenne indicative est la moyenne des moyennes d'UE, et n'est pas utilisée en BUT.
|
||||
Les moyennes sur le groupe sont estimées sans les absents (sauf pour les moyennes des moyennes d'UE) ni les démissionnaires.</span>"""
|
||||
eval_info += """</span>"""
|
||||
return html_form + eval_info + t + "<p></p>"
|
||||
else:
|
||||
@ -669,6 +670,7 @@ def _add_eval_columns(
|
||||
notes = [] # liste des notes numeriques, pour calcul histogramme uniquement
|
||||
evaluation_id = e["evaluation_id"]
|
||||
e_o = Evaluation.query.get(evaluation_id) # XXX en attendant ré-écriture
|
||||
inscrits = e_o.moduleimpl.formsemestre.etudids_actifs # set d'etudids
|
||||
notes_db = sco_evaluation_db.do_evaluation_get_all_notes(evaluation_id)
|
||||
for row in rows:
|
||||
etudid = row["etudid"]
|
||||
@ -678,8 +680,13 @@ def _add_eval_columns(
|
||||
nb_abs += 1
|
||||
if val == scu.NOTES_ATTENTE:
|
||||
nb_att += 1
|
||||
# calcul moyenne SANS LES ABSENTS
|
||||
if val != None and val != scu.NOTES_NEUTRALISE and val != scu.NOTES_ATTENTE:
|
||||
# calcul moyenne SANS LES ABSENTS ni les DEMISSIONNAIRES
|
||||
if (
|
||||
(etudid in inscrits)
|
||||
and val != None
|
||||
and val != scu.NOTES_NEUTRALISE
|
||||
and val != scu.NOTES_ATTENTE
|
||||
):
|
||||
if e["note_max"] > 0:
|
||||
valsur20 = val * 20.0 / e["note_max"] # remet sur 20
|
||||
else:
|
||||
@ -803,6 +810,7 @@ def _add_moymod_column(
|
||||
col_id = "moymod"
|
||||
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
|
||||
inscrits = formsemestre.etudids_actifs
|
||||
|
||||
nb_notes = 0
|
||||
sum_notes = 0
|
||||
@ -812,7 +820,7 @@ def _add_moymod_column(
|
||||
val = nt.get_etud_mod_moy(moduleimpl_id, etudid) # note sur 20, ou 'NA','NI'
|
||||
row[col_id] = scu.fmt_note(val, keep_numeric=keep_numeric)
|
||||
row["_" + col_id + "_td_attrs"] = ' class="moyenne" '
|
||||
if not isinstance(val, str):
|
||||
if etudid in inscrits and not isinstance(val, str):
|
||||
notes.append(val)
|
||||
nb_notes = nb_notes + 1
|
||||
sum_notes += val
|
||||
@ -854,6 +862,7 @@ def _add_apc_columns(
|
||||
# on va y ajouter une clé par UE du semestre
|
||||
nt: ResultatsSemestreBUT = res_sem.load_formsemestre_results(modimpl.formsemestre)
|
||||
modimpl_results: ModuleImplResults = nt.modimpls_results[modimpl.id]
|
||||
inscrits = modimpl.formsemestre.etudids_actifs
|
||||
# les UE dans lesquelles ce module a un coef non nul:
|
||||
ues_with_coef = nt.modimpl_coefs_df[modimpl.id][
|
||||
nt.modimpl_coefs_df[modimpl.id] > 0
|
||||
@ -868,7 +877,11 @@ def _add_apc_columns(
|
||||
moy_ue = modimpl_results.etuds_moy_module[ue.id].get(row["etudid"], "?")
|
||||
row[f"moy_ue_{ue.id}"] = scu.fmt_note(moy_ue, keep_numeric=keep_numeric)
|
||||
row[f"_moy_ue_{ue.id}_class"] = "moy_ue"
|
||||
if isinstance(moy_ue, float) and not np.isnan(moy_ue):
|
||||
if (
|
||||
isinstance(moy_ue, float)
|
||||
and not np.isnan(moy_ue)
|
||||
and row["etudid"] in inscrits
|
||||
):
|
||||
sum_by_ue[ue.id] += moy_ue
|
||||
nb_notes_by_ue[ue.id] += 1
|
||||
# Nom et coefs des UE (lignes titres):
|
||||
@ -885,7 +898,6 @@ def _add_apc_columns(
|
||||
if coefs:
|
||||
row_coefs[f"moy_ue_{ue.id}"] = coefs[0].coef
|
||||
row_coefs[f"_moy_ue_{ue.id}_td_attrs"] = f' class="{coef_class}" '
|
||||
modimpl_results.etuds_moy_module[ue.id]
|
||||
if nb_notes_by_ue[ue.id] > 0:
|
||||
row_moys[col_id] = "%.3g" % (sum_by_ue[ue.id] / nb_notes_by_ue[ue.id])
|
||||
row_moys["_" + col_id + "_help"] = "moyenne des moyennes"
|
||||
|
@ -1,7 +1,7 @@
|
||||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "9.1.85"
|
||||
SCOVERSION = "9.1.86"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user