Fix: calcul des moyennes d'UE dispensées

This commit is contained in:
Emmanuel Viennet 2025-02-05 21:56:27 +01:00
parent 7a59820558
commit 38037669dd
3 changed files with 19 additions and 21 deletions

View File

@ -302,10 +302,10 @@ def compute_ue_moys_apc(
# Les "dispenses" sont très peu nombreuses et traitées en python: # Les "dispenses" sont très peu nombreuses et traitées en python:
for dispense_ue in dispense_ues: for dispense_ue in dispense_ues:
if ( if (
dispense_ue[0] in etud_moy_ue_df.columns dispense_ue[1] in etud_moy_ue_df.columns
and dispense_ue[1] in etud_moy_ue_df.index and dispense_ue[0] in etud_moy_ue_df.index
): ):
etud_moy_ue_df.at[dispense_ue[1], dispense_ue[0]] = 0.0 etud_moy_ue_df.at[dispense_ue[0], dispense_ue[1]] = 0.0
return etud_moy_ue_df return etud_moy_ue_df

View File

@ -3,7 +3,7 @@
"Infos sur version ScoDoc" "Infos sur version ScoDoc"
SCOVERSION = "9.7.60" SCOVERSION = "9.7.61"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"

View File

@ -9,10 +9,12 @@ from app import db
from app.comp import moy_ue from app.comp import moy_ue
from app.comp import inscr_mod from app.comp import inscr_mod
from app.models import FormSemestre, Evaluation, ModuleImplInscription from app.models import FormSemestre, Evaluation, ModuleImplInscription
from app.comp.res_but import ResultatsSemestreBUT
from app.scodoc import sco_saisie_notes from app.scodoc import sco_saisie_notes
from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.codes_cursus import UE_SPORT
from app.scodoc.sco_utils import NOTES_NEUTRALISE from app.scodoc.sco_utils import NOTES_NEUTRALISE
from app.scodoc import sco_exceptions from app.scodoc import sco_exceptions
from app.views import notes
def test_ue_moy(test_client): def test_ue_moy(test_client):
@ -121,23 +123,19 @@ def test_ue_moy(test_client):
exception_raised = True exception_raised = True
assert exception_raised assert exception_raised
# Recalcule les notes: # Recalcule les notes:
modimpl_coefs_df, _, _ = moy_ue.df_load_modimpl_coefs( etud_moy_ue = _recompute(formsemestre)
formsemestre, modimpls=formsemestre.modimpls_sorted
)
sem_cube, _, _ = moy_ue.notes_sem_load_cube(formsemestre, modimpl_coefs_df)
etuds = formsemestre.etuds.all()
modimpl_mask = [
modimpl.module.ue.type != UE_SPORT for modimpl in formsemestre.modimpls_sorted
]
etud_moy_ue = moy_ue.compute_ue_moys_apc(
sem_cube,
etuds,
modimpls,
modimpl_inscr_df,
modimpl_coefs_df,
modimpl_mask,
set(),
)
assert etud_moy_ue[ue1.id][etudid] == n1 assert etud_moy_ue[ue1.id][etudid] == n1
assert etud_moy_ue[ue2.id][etudid] == n1 assert etud_moy_ue[ue2.id][etudid] == n1
assert etud_moy_ue[ue3.id][etudid] == n1 assert etud_moy_ue[ue3.id][etudid] == n1
# Test avec une UE dispensée
notes.etud_desinscrit_ue(etudid, formsemestre.id, ue3.id)
etud_moy_ue = _recompute(formsemestre)
assert etud_moy_ue[ue1.id][etudid] == n1
assert etud_moy_ue[ue2.id][etudid] == n1
assert etud_moy_ue[ue3.id][etudid] == 0.0 # plus inscrit à cette UE
def _recompute(formsemestre: FormSemestre):
"recalcule les notes, utilise ResultatsSemestreBUT"
nt = ResultatsSemestreBUT(formsemestre)
return nt.etud_moy_ue