diff --git a/app/models/modules.py b/app/models/modules.py index 52bcd508ed..1a79c43009 100644 --- a/app/models/modules.py +++ b/app/models/modules.py @@ -3,7 +3,7 @@ from app import db from app.models import APO_CODE_STR_LEN -from app.models.but_refcomp import app_critiques_modules, parcours_modules +from app.models.but_refcomp import ApcParcours, app_critiques_modules, parcours_modules from app.scodoc import sco_utils as scu from app.scodoc.sco_codes_parcours import UE_SPORT from app.scodoc.sco_utils import ModuleType @@ -219,6 +219,19 @@ class Module(db.Model): return {x.strip() for x in self.code_apogee.split(",") if x} return set() + def get_parcours(self) -> list[ApcParcours]: + """Les parcours utilisant ce module. + Si tous les parcours, liste vide (!). + """ + ref_comp = self.formation.referentiel_competence + if not ref_comp: + return [] + tous_parcours_ids = {p.id for p in ref_comp.parcours} + parcours_ids = {p.id for p in self.parcours} + if tous_parcours_ids == parcours_ids: + return [] + return self.parcours + class ModuleUECoef(db.Model): """Coefficients des modules vers les UE (APC, BUT) diff --git a/app/scodoc/sco_edit_module.py b/app/scodoc/sco_edit_module.py index 15d44004bf..ce78ca8609 100644 --- a/app/scodoc/sco_edit_module.py +++ b/app/scodoc/sco_edit_module.py @@ -341,7 +341,9 @@ def module_edit( # Toutes les UEs de la formation (tout parcours): ues = formation.ues.order_by( UniteEns.semestre_idx, UniteEns.numero, UniteEns.acronyme - ).all() + ) + if is_apc and create and semestre_id is not None: + ues = ues.filter_by(semestre_idx=semestre_id) # L'UE de rattachement par défaut: 1ere du semestre ue_default = ( formation.ues.filter_by(semestre_idx=orig_semestre_idx) diff --git a/app/templates/pn/form_mods.html b/app/templates/pn/form_mods.html index 480cf267c2..15bdff5fe6 100644 --- a/app/templates/pn/form_mods.html +++ b/app/templates/pn/form_mods.html @@ -2,100 +2,87 @@ {# Édition liste modules APC (SAÉ ou ressources) #}