diff --git a/app/scodoc/sco_edit_module.py b/app/scodoc/sco_edit_module.py index bb0152aec..0b76fce32 100644 --- a/app/scodoc/sco_edit_module.py +++ b/app/scodoc/sco_edit_module.py @@ -29,7 +29,7 @@ (portage from DTML) """ import flask -from flask import url_for, render_template +from flask import flash, url_for, render_template from flask import g, request from flask_login import current_user @@ -915,13 +915,23 @@ def module_count_moduleimpls(module_id): return len(mods) -def formation_add_malus_modules(formation_id, titre=None, redirect=True): +def formation_add_malus_modules( + formation_id: int, semestre_id: int = None, titre=None, redirect=True +): """Création d'un module de "malus" dans chaque UE d'une formation""" formation = Formation.query.get_or_404(formation_id) - for ue in formation.ues: - ue_add_malus_module(ue, titre=titre) + nb = 0 + ues = formation.ues + if semestre_id is not None: + ues = ues.filter_by(semestre_idx=semestre_id) + for ue in ues: + if ue.type == sco_codes_parcours.UE_STANDARD: + if ue_add_malus_module(ue, titre=titre) != None: + nb += 1 + + flash(f"Modules de malus ajoutés dans {nb} UEs du S{semestre_id}") formation.invalidate_cached_sems() @@ -940,9 +950,9 @@ def ue_add_malus_module(ue: UniteEns, titre=None, code=None) -> int: """ modules_malus = [m for m in ue.modules if m.module_type == scu.ModuleType.MALUS] if len(modules_malus) > 0: - return modules_malus[0].id # déjà existant + return None # déjà existant - titre = titre or "" + titre = titre or f"Malus {ue.acronyme}" code = code or f"MALUS{ue.numero}" # Tout module doit avoir un semestre_id (indice 1, 2, ...) @@ -954,7 +964,7 @@ def ue_add_malus_module(ue: UniteEns, titre=None, code=None) -> int: # c'est ennuyeux: dans ce cas, on pourrait demander à indiquer explicitement # le semestre ? ou affecter le malus au semestre 1 ??? raise ScoValueError( - "Impossible d'ajouter un malus s'il n'y a pas d'autres modules" + "Impossible d'ajouter un malus si l'UE n'a pas de numéro de semestre et ne comporte pas d'autres modules" ) else: semestre_id = ue.semestre_idx diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index 86bc2b9ab..c6837cc67 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -739,7 +739,8 @@ du programme" (menu "Semestre") si vous avez un semestre en cours); else: descr_refcomp = f"""Référentiel de compétences: + scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id)}" + class="stdlink"> {formation.referentiel_competence.type_titre} {formation.referentiel_competence.specialite_long} """ msg_refcomp = "changer" @@ -755,7 +756,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours); f"""