forked from ScoDoc/DocScoDoc
Calcul des rangs / modules en formations classiques
This commit is contained in:
parent
a902f6c1fe
commit
474f334755
@ -15,7 +15,7 @@ from flask import g, url_for
|
||||
|
||||
from app import db
|
||||
from app import log
|
||||
from app.comp import moy_mat, moy_mod, moy_ue, inscr_mod
|
||||
from app.comp import moy_mat, moy_mod, moy_sem, moy_ue, inscr_mod
|
||||
from app.comp.res_common import NotesTableCompat
|
||||
from app.comp.bonus_spo import BonusSport
|
||||
from app.models import ScoDocSiteConfig
|
||||
@ -35,6 +35,7 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
||||
"modimpl_coefs",
|
||||
"modimpl_idx",
|
||||
"sem_matrix",
|
||||
"mod_rangs",
|
||||
)
|
||||
|
||||
def __init__(self, formsemestre):
|
||||
@ -142,6 +143,22 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
||||
if sco_preferences.get_preference("bul_show_matieres", self.formsemestre.id):
|
||||
self.compute_moyennes_matieres()
|
||||
|
||||
def compute_rangs(self):
|
||||
"""Calcul des rangs (classements) dans le semestre (moy. gen.), les UE
|
||||
et les modules.
|
||||
"""
|
||||
# rangs moy gen et UEs sont calculées par la méthode commune à toutes les formations:
|
||||
super().compute_rangs()
|
||||
# les rangs des modules n'existent que dans les formations classiques:
|
||||
self.mod_rangs = {}
|
||||
for modimpl_result in self.modimpls_results.values():
|
||||
# ne prend que les rangs sous forme de chaines:
|
||||
rangs = moy_sem.comp_ranks_series(modimpl_result.etuds_moy_module)[0]
|
||||
self.mod_rangs[modimpl_result.moduleimpl_id] = (
|
||||
rangs,
|
||||
modimpl_result.nb_inscrits_module,
|
||||
)
|
||||
|
||||
def get_etud_mod_moy(self, moduleimpl_id: int, etudid: int) -> float:
|
||||
"""La moyenne de l'étudiant dans le moduleimpl
|
||||
Result: valeur float (peut être NaN) ou chaîne "NI" (non inscrit ou DEM)
|
||||
|
@ -66,7 +66,7 @@ class ResultatsSemestre(ResultatsCache):
|
||||
"""Moyennes de matières, si calculées. { matiere_id : Series, index etudid }"""
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{self.__class__.__name__}(id={self.id}, formsemestre='{self.formsemestre}')>"
|
||||
return f"<{self.__class__.__name__}(formsemestre='{self.formsemestre}')>"
|
||||
|
||||
def compute(self):
|
||||
"Charge les notes et inscriptions et calcule toutes les moyennes"
|
||||
@ -369,6 +369,7 @@ class NotesTableCompat(ResultatsSemestre):
|
||||
self.bonus_ues = None # virtuel
|
||||
self.ue_rangs = {u.id: (None, nb_etuds) for u in self.ues}
|
||||
self.mod_rangs = None # sera surchargé en Classic, mais pas en APC
|
||||
"""{ modimpl_id : (rangs, effectif) }"""
|
||||
self.moy_min = "NA"
|
||||
self.moy_max = "NA"
|
||||
self.moy_moy = "NA"
|
||||
|
Loading…
Reference in New Issue
Block a user