forked from ScoDoc/ScoDoc
Fix: choix du parcours sur création/édition Module
This commit is contained in:
parent
0a1e16e81a
commit
ad754ebd24
@ -421,7 +421,7 @@ def module_edit(
|
||||
else:
|
||||
modules = formation.modules.all()
|
||||
if modules:
|
||||
default_num = max([m.numero or 0 for m in modules]) + 10
|
||||
default_num = max(m.numero or 0 for m in modules) + 10
|
||||
else:
|
||||
default_num = 10
|
||||
|
||||
@ -767,7 +767,6 @@ def module_edit(
|
||||
module_dict["semestre_id"] = 1
|
||||
else:
|
||||
module_dict["semestre_id"] = module.ue.semestre_idx
|
||||
|
||||
tf = TrivialFormulator(
|
||||
request.base_url,
|
||||
scu.get_request_args(),
|
||||
@ -809,7 +808,7 @@ def module_edit(
|
||||
else ""
|
||||
),
|
||||
)
|
||||
elif tf[0] == -1:
|
||||
if tf[0] == -1:
|
||||
return flask.redirect(
|
||||
url_for(
|
||||
"notes.ue_table",
|
||||
@ -818,81 +817,82 @@ def module_edit(
|
||||
semestre_idx=orig_semestre_idx,
|
||||
)
|
||||
)
|
||||
else:
|
||||
if isinstance(tf[2]["numero"], str):
|
||||
tf[2]["numero"] = tf[2]["numero"].strip()
|
||||
if not isinstance(tf[2]["numero"], int) and not tf[2]["numero"]:
|
||||
tf[2]["numero"] = tf[2]["numero"] or default_num
|
||||
if create:
|
||||
if not matiere_id:
|
||||
# formulaire avec choix UE de rattachement
|
||||
ue = db.session.get(UniteEns, 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 or "", "numero": 1},
|
||||
)
|
||||
tf[2]["matiere_id"] = matiere_id
|
||||
|
||||
tf[2]["semestre_id"] = ue.semestre_idx
|
||||
module_id = do_module_create(tf[2])
|
||||
module = db.session.get(Module, module_id)
|
||||
else: # EDITION MODULE
|
||||
# l'UE de rattachement peut changer
|
||||
tf[2]["ue_id"], tf[2]["matiere_id"] = tf[2]["ue_matiere_id"].split("!")
|
||||
x, y = tf[2]["ue_matiere_id"].split("!")
|
||||
tf[2]["ue_id"] = int(x)
|
||||
tf[2]["matiere_id"] = int(y)
|
||||
old_ue_id = module.ue.id
|
||||
new_ue_id = tf[2]["ue_id"]
|
||||
if (old_ue_id != new_ue_id) and in_use:
|
||||
new_ue = UniteEns.query.get_or_404(new_ue_id)
|
||||
if new_ue.semestre_idx != module.ue.semestre_idx:
|
||||
# pas changer de semestre un module utilisé !
|
||||
raise ScoValueError(
|
||||
"Module utilisé: il ne peut pas être changé de semestre !"
|
||||
)
|
||||
# En APC, force le semestre égal à celui de l'UE
|
||||
if is_apc:
|
||||
selected_ue = db.session.get(UniteEns, tf[2]["ue_id"])
|
||||
if selected_ue is None:
|
||||
raise ValueError("UE invalide")
|
||||
tf[2]["semestre_id"] = selected_ue.semestre_idx
|
||||
if not tf[2].get("code"):
|
||||
raise ScoValueError("Le code du module doit être spécifié.")
|
||||
# Check unicité code module dans la formation
|
||||
# ??? TODO
|
||||
#
|
||||
do_module_edit(tf[2])
|
||||
# Modifie les parcours
|
||||
if ("parcours" in tf[2]) and formation.referentiel_competence:
|
||||
if "-1" in tf[2]["parcours"]: # "tous"
|
||||
module.parcours = formation.referentiel_competence.parcours.all()
|
||||
if isinstance(tf[2]["numero"], str):
|
||||
tf[2]["numero"] = tf[2]["numero"].strip()
|
||||
if not isinstance(tf[2]["numero"], int) and not tf[2]["numero"]:
|
||||
tf[2]["numero"] = tf[2]["numero"] or default_num
|
||||
# Les parcours sont affectés ensuite
|
||||
form_parcours = tf[2].pop("parcours", [])
|
||||
if create:
|
||||
if not matiere_id:
|
||||
# formulaire avec choix UE de rattachement
|
||||
ue = db.session.get(UniteEns, 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:
|
||||
module.parcours = [
|
||||
db.session.get(ApcParcours, int(parcour_id_str))
|
||||
for parcour_id_str in tf[2]["parcours"]
|
||||
]
|
||||
# Modifie les AC
|
||||
if "app_critiques" in tf[2]:
|
||||
module.app_critiques = [
|
||||
db.session.get(ApcAppCritique, int(ac_id_str))
|
||||
for ac_id_str in tf[2]["app_critiques"]
|
||||
matiere_id = sco_edit_matiere.do_matiere_create(
|
||||
{"ue_id": ue.id, "titre": ue.titre or "", "numero": 1},
|
||||
)
|
||||
tf[2]["matiere_id"] = matiere_id
|
||||
|
||||
tf[2]["semestre_id"] = ue.semestre_idx
|
||||
module_id = do_module_create(tf[2])
|
||||
module = db.session.get(Module, module_id)
|
||||
else: # EDITION MODULE
|
||||
# l'UE de rattachement peut changer
|
||||
tf[2]["ue_id"], tf[2]["matiere_id"] = tf[2]["ue_matiere_id"].split("!")
|
||||
x, y = tf[2]["ue_matiere_id"].split("!")
|
||||
tf[2]["ue_id"] = int(x)
|
||||
tf[2]["matiere_id"] = int(y)
|
||||
old_ue_id = module.ue.id
|
||||
new_ue_id = tf[2]["ue_id"]
|
||||
if (old_ue_id != new_ue_id) and in_use:
|
||||
new_ue = UniteEns.query.get_or_404(new_ue_id)
|
||||
if new_ue.semestre_idx != module.ue.semestre_idx:
|
||||
# pas changer de semestre un module utilisé !
|
||||
raise ScoValueError(
|
||||
"Module utilisé: il ne peut pas être changé de semestre !"
|
||||
)
|
||||
# En APC, force le semestre égal à celui de l'UE
|
||||
if is_apc:
|
||||
selected_ue = db.session.get(UniteEns, tf[2]["ue_id"])
|
||||
if selected_ue is None:
|
||||
raise ValueError("UE invalide")
|
||||
tf[2]["semestre_id"] = selected_ue.semestre_idx
|
||||
if not tf[2].get("code"):
|
||||
raise ScoValueError("Le code du module doit être spécifié.")
|
||||
# Check unicité code module dans la formation
|
||||
# ??? TODO
|
||||
#
|
||||
do_module_edit(tf[2])
|
||||
# Modifie les parcours
|
||||
if form_parcours is not None and formation.referentiel_competence:
|
||||
if "-1" in form_parcours: # "tous"
|
||||
module.parcours = formation.referentiel_competence.parcours.all()
|
||||
else:
|
||||
module.parcours = [
|
||||
db.session.get(ApcParcours, int(parcour_id_str))
|
||||
for parcour_id_str in form_parcours
|
||||
]
|
||||
db.session.add(module)
|
||||
db.session.commit()
|
||||
return flask.redirect(
|
||||
url_for(
|
||||
"notes.ue_table",
|
||||
scodoc_dept=g.scodoc_dept,
|
||||
formation_id=formation.id,
|
||||
semestre_idx=tf[2]["semestre_id"] if is_apc else 1,
|
||||
)
|
||||
# Modifie les AC
|
||||
if "app_critiques" in tf[2]:
|
||||
module.app_critiques = [
|
||||
db.session.get(ApcAppCritique, int(ac_id_str))
|
||||
for ac_id_str in tf[2]["app_critiques"]
|
||||
]
|
||||
db.session.add(module)
|
||||
db.session.commit()
|
||||
return flask.redirect(
|
||||
url_for(
|
||||
"notes.ue_table",
|
||||
scodoc_dept=g.scodoc_dept,
|
||||
formation_id=formation.id,
|
||||
semestre_idx=tf[2]["semestre_id"] if is_apc else 1,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def module_table(formation_id):
|
||||
|
Loading…
Reference in New Issue
Block a user