From 38037669dd4dcd365511d3e2008affaf2435bc1b Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 5 Feb 2025 21:56:27 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20calcul=20des=20moyennes=20d'UE=20dispens?= =?UTF-8?q?=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/comp/moy_ue.py | 6 +++--- sco_version.py | 2 +- tests/unit/test_but_ues.py | 32 +++++++++++++++----------------- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/app/comp/moy_ue.py b/app/comp/moy_ue.py index 0a64928bb..8030208d3 100644 --- a/app/comp/moy_ue.py +++ b/app/comp/moy_ue.py @@ -302,10 +302,10 @@ def compute_ue_moys_apc( # Les "dispenses" sont très peu nombreuses et traitées en python: for dispense_ue in dispense_ues: if ( - dispense_ue[0] in etud_moy_ue_df.columns - and dispense_ue[1] in etud_moy_ue_df.index + dispense_ue[1] in etud_moy_ue_df.columns + 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 diff --git a/sco_version.py b/sco_version.py index eb6d6e298..e63d45ce5 100644 --- a/sco_version.py +++ b/sco_version.py @@ -3,7 +3,7 @@ "Infos sur version ScoDoc" -SCOVERSION = "9.7.60" +SCOVERSION = "9.7.61" SCONAME = "ScoDoc" diff --git a/tests/unit/test_but_ues.py b/tests/unit/test_but_ues.py index 1c0e33aef..f7df97a42 100644 --- a/tests/unit/test_but_ues.py +++ b/tests/unit/test_but_ues.py @@ -9,10 +9,12 @@ from app import db from app.comp import moy_ue from app.comp import inscr_mod from app.models import FormSemestre, Evaluation, ModuleImplInscription +from app.comp.res_but import ResultatsSemestreBUT from app.scodoc import sco_saisie_notes from app.scodoc.codes_cursus import UE_SPORT from app.scodoc.sco_utils import NOTES_NEUTRALISE from app.scodoc import sco_exceptions +from app.views import notes def test_ue_moy(test_client): @@ -121,23 +123,19 @@ def test_ue_moy(test_client): exception_raised = True assert exception_raised # Recalcule les notes: - modimpl_coefs_df, _, _ = moy_ue.df_load_modimpl_coefs( - 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(), - ) + 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] == 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