Code cleaning
This commit is contained in:
parent
c11fccab02
commit
f537cd2e48
@ -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"""<h2>Création {object_name} dans la formation {formation.acronyme}
|
||||
</h2>
|
||||
"""
|
||||
]
|
||||
else:
|
||||
H += [
|
||||
f"""<h2>Création {object_name} dans la matière {matiere.titre},
|
||||
(UE {ue.acronyme}), semestre {ue.semestre_idx}</h2>
|
||||
"""
|
||||
]
|
||||
|
||||
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: <em>Introduction à la démarche ergonomique</em>",
|
||||
},
|
||||
),
|
||||
(
|
||||
"abbrev",
|
||||
{
|
||||
"size": 20,
|
||||
"explanation": "nom abrégé (pour les bulletins). Exemple: <em>Intro. à l'ergonomie</em>",
|
||||
},
|
||||
),
|
||||
]
|
||||
|
||||
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": """
|
||||
<div>(<em>les coefficients vers les UE se fixent sur la page dédiée</em>)
|
||||
</div>""",
|
||||
},
|
||||
),
|
||||
]
|
||||
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"""<h3>Destruction du module impossible car il est utilisé dans des semestres existants !</h3>
|
||||
<p class="help">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"""
|
||||
<h3>Destruction du module impossible car il est utilisé dans des
|
||||
semestres existants !</h3>
|
||||
<p class="help">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.
|
||||
</p>
|
||||
<a href="{url_for('notes.ue_table', scodoc_dept=g.scodoc_dept,
|
||||
formation_id=mod["formation_id"])}">reprendre</a>
|
||||
@ -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(
|
||||
"""<div class="ue_warning"><span>Formation verrouillée, seuls certains éléments peuvent être modifiés</span></div>"""
|
||||
"""<div class="ue_warning"><span>Formation verrouillée, seuls
|
||||
certains éléments peuvent être modifiés</span></div>"""
|
||||
)
|
||||
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": " <br>(passer par la page d'édition de la formation pour modifier les coefficients)",
|
||||
"explanation": """ <br>(passer par la page d'édition de la
|
||||
formation pour modifier les coefficients)""",
|
||||
},
|
||||
)
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user