diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py
index a999932e1d..d58fdfbb2b 100644
--- a/app/scodoc/sco_utils.py
+++ b/app/scodoc/sco_utils.py
@@ -1142,7 +1142,7 @@ def confirm_dialog(
def objects_renumber(db, obj_list) -> None:
"""fixe les numeros des objets d'une liste de modèles
pour ne pas changer son ordre"""
- log(f"objects_renumber {obj_list}")
+ log(f"objects_renumber")
for i, obj in enumerate(obj_list):
obj.numero = i
db.session.add(obj)
diff --git a/tests/ressources/formations/scodoc_formation_BUT_GB_v1.xml b/tests/ressources/formations/scodoc_formation_BUT_GB_v1.xml
index e51e116642..d0c3636201 100644
--- a/tests/ressources/formations/scodoc_formation_BUT_GB_v1.xml
+++ b/tests/ressources/formations/scodoc_formation_BUT_GB_v1.xml
@@ -625,7 +625,26 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -650,26 +669,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -702,6 +702,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/unit/cursus_but_gb.yaml b/tests/unit/cursus_but_gb.yaml
index c8b1f73138..2dba62e954 100644
--- a/tests/unit/cursus_but_gb.yaml
+++ b/tests/unit/cursus_but_gb.yaml
@@ -9,14 +9,14 @@ Formation:
filename: scodoc_formation_BUT_GB_v1.xml
# Association des UE aux compétences:
ues:
- # Tronc commun GB:
+ # S1 : Tronc commun GB
'UE 11':
annee: BUT1
competence: Analyser
'UE 12':
annee: BUT1
competence: Experimenter
- # Parcours SEE
+ # S1 Parcours SEE
'UE 1.3 SEE':
annee: BUT1
competence: Gérer
@@ -25,7 +25,7 @@ Formation:
annee: BUT1
competence: Traiter
parcours: SEE
- # Parcours BMB
+ # S1 Parcours BMB
'UE 1.3 BMB':
annee: BUT1
competence: Mener
@@ -34,6 +34,69 @@ Formation:
annee: BUT1
competence: Réaliser
parcours: BMB
+ # S2 : Tronc commun GB
+ 'UE 21':
+ annee: BUT1
+ competence: Analyser
+ 'UE 22':
+ annee: BUT1
+ competence: Experimenter
+ # S2 Parcours SEE
+ 'UE 23 SEE':
+ annee: BUT1
+ competence: Gérer
+ parcours: SEE
+ 'UE 24 SEE':
+ annee: BUT1
+ competence: Traiter
+ parcours: SEE
+ # S2 Parcours BMB
+ 'UE 23 BMB':
+ annee: BUT1
+ competence: Mener
+ parcours: BMB
+ 'UE 24 BMB':
+ annee: BUT1
+ competence: Réaliser
+ parcours: BMB
+ # S3 : Tronc commun GB
+ 'UE 3.1':
+ annee: BUT2
+ competence: Analyser
+ 'UE 3.2':
+ annee: BUT2
+ competence: Experimenter
+ # S3 BMB
+ 'UE 3.3 BMB':
+ annee: BUT2
+ competence: Mener
+ parcours: BMB
+ 'UE 3.4 BMB':
+ annee: BUT2
+ competence: Réaliser
+ parcours: BMB
+ 'UE 3.5 BMB':
+ annee: BUT2
+ competence: Mettre en œuvre
+ parcours: BMB
+ # S3 SEE
+ 'UE 3.3 SEE':
+ annee: BUT2
+ competence: Gérer
+ parcours: SEE
+ 'UE 3.4 SEE':
+ annee: BUT2
+ competence: Traiter
+ parcours: SEE
+ 'UE 3.5 SEE':
+ annee: BUT2
+ competence: Déployer
+ parcours: SEE
+ modules_parcours:
+ # cette section permet d'associer des modules à des parcours
+ # les codes modules peuvent être des regexp
+ BMB: [ .*BMB.* ]
+ SEE: [ .*SEE.* ]
FormSemestres:
# S1 et S2 avec les parcours séparés:
diff --git a/tests/unit/test_but_jury.py b/tests/unit/test_but_jury.py
index 0445ed4dde..03757db7d7 100644
--- a/tests/unit/test_but_jury.py
+++ b/tests/unit/test_but_jury.py
@@ -1,8 +1,8 @@
""" Test jury BUT avec parcours
"""
-import datetime
import os
from pathlib import Path
+import re
from flask import current_app, g
import pytest
@@ -110,9 +110,30 @@ def setup_but_formation(doc: dict) -> Formation:
ue.set_niveau_competence(niveau)
db.session.commit()
+ associe_modules_et_parcours(formation, formation_infos)
return formation
+def associe_modules_et_parcours(formation: Formation, formation_infos: dict):
+ """Associe les modules à des parcours, grâce au champ modules_parcours"""
+ for code_parcours, codes_modules in formation_infos.get(
+ "modules_parcours", {}
+ ).items():
+ parcour = formation.referentiel_competence.parcours.filter_by(
+ code=code_parcours
+ ).first()
+ assert parcour is not None # code parcours doit exister dans le ref. comp.
+ for code_module in codes_modules:
+ for module in [
+ module
+ for module in formation.modules
+ if re.match(code_module, module.code)
+ ]:
+ module.parcours.append(parcour)
+ db.session.add(module)
+ db.session.commit()
+
+
def _un_semestre(
formation: Formation,
parcours: list[ApcParcours],