forked from ScoDoc/ScoDoc
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 db
|
||||||
from app import log
|
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.res_common import NotesTableCompat
|
||||||
from app.comp.bonus_spo import BonusSport
|
from app.comp.bonus_spo import BonusSport
|
||||||
from app.models import ScoDocSiteConfig
|
from app.models import ScoDocSiteConfig
|
||||||
@ -35,6 +35,7 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
|||||||
"modimpl_coefs",
|
"modimpl_coefs",
|
||||||
"modimpl_idx",
|
"modimpl_idx",
|
||||||
"sem_matrix",
|
"sem_matrix",
|
||||||
|
"mod_rangs",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, formsemestre):
|
def __init__(self, formsemestre):
|
||||||
@ -142,6 +143,22 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
|||||||
if sco_preferences.get_preference("bul_show_matieres", self.formsemestre.id):
|
if sco_preferences.get_preference("bul_show_matieres", self.formsemestre.id):
|
||||||
self.compute_moyennes_matieres()
|
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:
|
def get_etud_mod_moy(self, moduleimpl_id: int, etudid: int) -> float:
|
||||||
"""La moyenne de l'étudiant dans le moduleimpl
|
"""La moyenne de l'étudiant dans le moduleimpl
|
||||||
Result: valeur float (peut être NaN) ou chaîne "NI" (non inscrit ou DEM)
|
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 }"""
|
"""Moyennes de matières, si calculées. { matiere_id : Series, index etudid }"""
|
||||||
|
|
||||||
def __repr__(self):
|
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):
|
def compute(self):
|
||||||
"Charge les notes et inscriptions et calcule toutes les moyennes"
|
"Charge les notes et inscriptions et calcule toutes les moyennes"
|
||||||
@ -369,6 +369,7 @@ class NotesTableCompat(ResultatsSemestre):
|
|||||||
self.bonus_ues = None # virtuel
|
self.bonus_ues = None # virtuel
|
||||||
self.ue_rangs = {u.id: (None, nb_etuds) for u in self.ues}
|
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
|
self.mod_rangs = None # sera surchargé en Classic, mais pas en APC
|
||||||
|
"""{ modimpl_id : (rangs, effectif) }"""
|
||||||
self.moy_min = "NA"
|
self.moy_min = "NA"
|
||||||
self.moy_max = "NA"
|
self.moy_max = "NA"
|
||||||
self.moy_moy = "NA"
|
self.moy_moy = "NA"
|
||||||
|
Loading…
Reference in New Issue
Block a user