diff --git a/app/scodoc/sco_edit_module.py b/app/scodoc/sco_edit_module.py
index 57b4f8105..2317d8b4c 100644
--- a/app/scodoc/sco_edit_module.py
+++ b/app/scodoc/sco_edit_module.py
@@ -129,235 +129,6 @@ def module_create(
semestre_id=semestre_id,
formation_id=formation_id,
)
- if matiere_id:
- matiere = Matiere.query.get_or_404(matiere_id)
- ue = matiere.ue
- formation = ue.formation
- else:
- formation = Formation.query.get_or_404(formation_id)
- parcours = formation.get_parcours()
- is_apc = parcours.APC_SAE
- ues = formation.ues.order_by(
- UniteEns.semestre_idx, UniteEns.numero, UniteEns.acronyme
- ).all()
- # cherche le numero adéquat (pour placer le module en fin de liste)
- modules = formation.modules.all()
- if modules:
- default_num = max([m.numero or 0 for m in modules]) + 10
- else:
- default_num = 10
-
- if is_apc and module_type is not None:
- object_name = scu.MODULE_TYPE_NAMES[module_type]
- else:
- object_name = "Module"
- H = [
- html_sco_header.sco_header(page_title=f"Création {object_name}"),
- ]
- if not matiere_id:
- H += [
- f"""
Création {object_name} dans la formation {formation.acronyme}
-
- """
- ]
- else:
- H += [
- f"""Création {object_name} dans la matière {matiere.titre},
- (UE {ue.acronyme}), semestre {ue.semestre_idx}
- """
- ]
-
- H += [
- render_template(
- "scodoc/help/modules.html",
- is_apc=is_apc,
- semestre_id=semestre_id,
- )
- ]
-
- descr = [
- (
- "code",
- {
- "size": 10,
- "explanation": "code du module, ressource ou SAÉ. Exemple M1203, R2.01, ou SAÉ 3.4. Ce code doit être unique dans la formation.",
- "allow_null": False,
- "validator": lambda val, field, formation_id=formation_id: check_module_code_unicity(
- val, field, formation_id
- ),
- },
- ),
- (
- "titre",
- {
- "size": 30,
- "explanation": "nom du module. Exemple: Introduction à la démarche ergonomique",
- },
- ),
- (
- "abbrev",
- {
- "size": 20,
- "explanation": "nom abrégé (pour les bulletins). Exemple: Intro. à l'ergonomie",
- },
- ),
- ]
-
- if is_apc:
- module_types = scu.ModuleType # tous les types
- else:
- # ne propose pas SAE et Ressources:
- module_types = set(scu.ModuleType) - {
- scu.ModuleType.RESSOURCE,
- scu.ModuleType.SAE,
- }
-
- descr += [
- (
- "module_type",
- {
- "input_type": "menu",
- "title": "Type",
- "explanation": "",
- "labels": [x.name.capitalize() for x in module_types],
- "allowed_values": [str(int(x)) for x in module_types],
- },
- ),
- (
- "heures_cours",
- {
- "title": "Heures de cours",
- "size": 4,
- "type": "float",
- "explanation": "nombre d'heures de cours (optionnel)",
- },
- ),
- (
- "heures_td",
- {
- "title": "Heures de TD",
- "size": 4,
- "type": "float",
- "explanation": "nombre d'heures de Travaux Dirigés (optionnel)",
- },
- ),
- (
- "heures_tp",
- {
- "title": "Heures de TP",
- "size": 4,
- "type": "float",
- "explanation": "nombre d'heures de Travaux Pratiques (optionnel)",
- },
- ),
- ]
- if is_apc:
- descr += [
- (
- "sep_ue_coefs",
- {
- "input_type": "separator",
- "title": """
- (les coefficients vers les UE se fixent sur la page dédiée)
-
""",
- },
- ),
- ]
- else:
- descr += [
- (
- "coefficient",
- {
- "size": 4,
- "type": "float",
- "explanation": "coefficient dans la formation (PPN)",
- "allow_null": False,
- },
- ),
- ]
-
- if matiere_id:
- descr += [
- ("ue_id", {"default": ue.id, "input_type": "hidden"}),
- ("matiere_id", {"default": matiere_id, "input_type": "hidden"}),
- ]
- else:
- # choix de l'UE de rattachement
- descr += [
- (
- "ue_id",
- {
- "input_type": "menu",
- "type": "int",
- "title": "UE de rattachement",
- "explanation": "utilisée notamment pour les malus",
- "labels": [
- f"S{u.semestre_idx if u.semestre_idx is not None else '.'} / {u.acronyme} {u.titre}"
- for u in ues
- ],
- "allowed_values": [u.id for u in ues],
- },
- ),
- ]
-
- descr += [
- # ('ects', { 'size' : 4, 'type' : 'float', 'title' : 'ECTS', 'explanation' : 'nombre de crédits ECTS (inutilisés: les crédits sont associés aux UE)' }),
- ("formation_id", {"default": formation.id, "input_type": "hidden"}),
- (
- "code_apogee",
- {
- "title": "Code Apogée",
- "size": 25,
- "explanation": "(optionnel) code élément pédagogique Apogée ou liste de codes ELP séparés par des virgules",
- "validator": lambda val, _: len(val) < APO_CODE_STR_LEN,
- },
- ),
- (
- "numero",
- {
- "size": 2,
- "explanation": "numéro (1,2,3,4...) pour ordre d'affichage",
- "type": "int",
- "default": default_num,
- },
- ),
- ]
- args = scu.get_request_args()
- tf = TrivialFormulator(
- request.base_url,
- args,
- descr,
- submitlabel="Créer ce module",
- )
- if tf[0] == 0:
- return "\n".join(H) + tf[1] + html_sco_header.sco_footer()
- else:
- if not matiere_id:
- # formulaire avec choix UE de rattachement
- ue = UniteEns.query.get(tf[2]["ue_id"])
- if ue is None:
- raise ValueError("UE invalide")
- matiere = ue.matieres.first()
- if matiere:
- tf[2]["matiere_id"] = matiere.id
- else:
- matiere_id = sco_edit_matiere.do_matiere_create(
- {"ue_id": ue.id, "titre": ue.titre, "numero": 1},
- )
- tf[2]["matiere_id"] = matiere_id
-
- tf[2]["semestre_id"] = ue.semestre_idx
-
- _ = do_module_create(tf[2])
-
- return flask.redirect(
- url_for(
- "notes.ue_table",
- scodoc_dept=g.scodoc_dept,
- formation_id=formation.id,
- semestre_idx=tf[2]["semestre_id"],
- )
- )
def can_delete_module(module):
@@ -367,8 +138,6 @@ def can_delete_module(module):
def do_module_delete(oid):
"delete module"
- from app.scodoc import sco_formations
-
module = Module.query.get_or_404(oid)
mod = module_list({"module_id": oid})[0] # sco7
if module_is_locked(module.id):
@@ -388,9 +157,14 @@ def do_module_delete(oid):
# S'il y a des moduleimpls, on ne peut pas detruire le module !
mods = sco_moduleimpl.moduleimpl_list(module_id=oid)
if mods:
- err_page = f"""Destruction du module impossible car il est utilisé dans des semestres existants !
- Il faut d'abord supprimer le semestre (ou en retirer ce module). Mais il est peut être préférable de
- laisser ce programme intact et d'en créer une nouvelle version pour la modifier sans affecter les semestres déjà en place.
+ err_page = f"""
+
Destruction du module impossible car il est utilisé dans des
+ semestres existants !
+ Il faut d'abord supprimer le semestre (ou en retirer
+ ce module).
+ Mais il est peut être préférable de laisser ce programme intact et
+ d'en créer une nouvelle version pour la modifier sans affecter
+ les semestres déjà en place.
reprendre
@@ -473,11 +247,11 @@ def do_module_edit(vals: dict) -> None:
def check_module_code_unicity(code, field, formation_id, module_id=None):
"true si code module unique dans la formation"
- Mods = module_list(args={"code": code, "formation_id": formation_id})
+ modules = module_list(args={"code": code, "formation_id": formation_id})
if module_id: # edition: supprime le module en cours
- Mods = [m for m in Mods if m["module_id"] != module_id]
+ modules = [m for m in modules if m["module_id"] != module_id]
- return len(Mods) == 0
+ return len(modules) == 0
def module_edit(
@@ -607,7 +381,8 @@ def module_edit(
]
if not unlocked:
H.append(
- """Formation verrouillée, seuls certains éléments peuvent être modifiés
"""
+ """Formation verrouillée, seuls
+ certains éléments peuvent être modifiés
"""
)
if is_apc:
module_types = scu.ModuleType # tous les types
@@ -639,7 +414,8 @@ def module_edit(
"code",
{
"size": 10,
- "explanation": "code du module (issu du programme, exemple M1203, R2.01 , ou SAÉ 3.4. Doit être unique dans la formation)",
+ "explanation": """code du module (issu du programme, exemple M1203,
+ R2.01, ou SAÉ 3.4. Doit être unique dans la formation)""",
"allow_null": False,
"validator": lambda val, field, formation_id=formation.id: check_module_code_unicity(
val, field, formation_id, module_id=module.id if module else None
@@ -717,7 +493,8 @@ def module_edit(
"readonly": True,
"title": "Coefficients vers les UE ",
"default": coefs_descr_txt,
- "explanation": "
(passer par la page d'édition de la formation pour modifier les coefficients)",
+ "explanation": """
(passer par la page d'édition de la
+ formation pour modifier les coefficients)""",
},
)
]