diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 5ed34cf36..f4f0c77c1 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -257,10 +257,14 @@ class FormSemestre(db.Model): if self.formation.get_parcours().APC_SAE: sem_ues = UniteEns.query.filter_by( formation=self.formation, semestre_idx=self.semestre_id - ).filter( - (UniteEns.parcour == None) - | (UniteEns.parcour_id.in_([p.id for p in self.parcours])) ) + if self.parcours: + # Prend toutes les UE de l'un des parcours du sem., ou déclarées sans parcours + sem_ues = sem_ues.filter( + (UniteEns.parcour == None) + | (UniteEns.parcour_id.in_([p.id for p in self.parcours])) + ) + # si le sem. ne coche aucun parcours, prend toutes les UE else: sem_ues = db.session.query(UniteEns).filter( ModuleImpl.formsemestre_id == self.id, diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index bd396ad16..3eee1a67b 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -553,7 +553,10 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N str(parcour.id) for parcour in ref_comp.parcours ], "explanation": """Parcours proposés dans ce semestre. - S'il s'agit d'un semestre de "tronc commun", ne pas indiquer de parcours.""", + S'il s'agit d'un semestre de "tronc commun", ne pas indiquer de parcours. + Attention, si aucun parcours n'est coché, toutes les UEs du + programme seront considérées, quel que soit leur parcours. + """, }, ) ] diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py index 85eac7241..653834676 100644 --- a/app/scodoc/sco_formsemestre_status.py +++ b/app/scodoc/sco_formsemestre_status.py @@ -40,7 +40,7 @@ from app import log from app.comp import res_sem from app.comp.res_common import ResultatsSemestre from app.comp.res_compat import NotesTableCompat -from app.models import Evaluation, Module, ModuleImpl, NotesNotes +from app.models import Evaluation, Formation, Module, ModuleImpl, NotesNotes from app.models.etudiants import Identite from app.models.formsemestre import FormSemestre import app.scodoc.sco_utils as scu @@ -963,12 +963,12 @@ def html_expr_diagnostic(diagnostics): return "".join(H) -def formsemestre_status_head(formsemestre_id=None, page_title=None): +def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None): """En-tête HTML des pages "semestre" """ - sem = FormSemestre.query.get(formsemestre_id) + sem: FormSemestre = FormSemestre.query.get(formsemestre_id) if not sem: raise ScoValueError("Semestre inexistant (il a peut être été supprimé ?)") - formation = sem.formation + formation: Formation = sem.formation parcours = formation.get_parcours() page_title = page_title or "Modules de " @@ -996,11 +996,16 @@ def formsemestre_status_head(formsemestre_id=None, page_title=None): })""" ) H.append("") - if sem.parcours: + if formation.is_apc(): + # Affiche les parcours BUT cochés. Si aucun, tous ceux du référentiel. + sem_parcours = sem.parcours or ( + formation.referentiel_competence + and formation.referentiel_competence.parcours + ) H.append( f"""