diff --git a/app/comp/moy_ue.py b/app/comp/moy_ue.py
index 0a64928bbb69a8b75f3d631139effc01704caed2..8030208d37f987e3e27f928c1662fce104ea905b 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 eb6d6e298f388ee1e51db7700d458d3e128d866b..e63d45ce54e31a91f4ae9cd208f97ecc21601513 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 1c0e33aef20ff9a8c9dee43ac072fb9732126bc1..f7df97a426a4b765227d46a344c26a44e7cad62d 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