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:
|
else:
|
||||||
modules = formation.modules.all()
|
modules = formation.modules.all()
|
||||||
if modules:
|
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:
|
else:
|
||||||
default_num = 10
|
default_num = 10
|
||||||
|
|
||||||
@ -767,7 +767,6 @@ def module_edit(
|
|||||||
module_dict["semestre_id"] = 1
|
module_dict["semestre_id"] = 1
|
||||||
else:
|
else:
|
||||||
module_dict["semestre_id"] = module.ue.semestre_idx
|
module_dict["semestre_id"] = module.ue.semestre_idx
|
||||||
|
|
||||||
tf = TrivialFormulator(
|
tf = TrivialFormulator(
|
||||||
request.base_url,
|
request.base_url,
|
||||||
scu.get_request_args(),
|
scu.get_request_args(),
|
||||||
@ -809,7 +808,7 @@ def module_edit(
|
|||||||
else ""
|
else ""
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
elif tf[0] == -1:
|
if tf[0] == -1:
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
url_for(
|
url_for(
|
||||||
"notes.ue_table",
|
"notes.ue_table",
|
||||||
@ -818,81 +817,82 @@ def module_edit(
|
|||||||
semestre_idx=orig_semestre_idx,
|
semestre_idx=orig_semestre_idx,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
if isinstance(tf[2]["numero"], str):
|
||||||
if isinstance(tf[2]["numero"], str):
|
tf[2]["numero"] = tf[2]["numero"].strip()
|
||||||
tf[2]["numero"] = tf[2]["numero"].strip()
|
if not isinstance(tf[2]["numero"], int) and not tf[2]["numero"]:
|
||||||
if not isinstance(tf[2]["numero"], int) and not tf[2]["numero"]:
|
tf[2]["numero"] = tf[2]["numero"] or default_num
|
||||||
tf[2]["numero"] = tf[2]["numero"] or default_num
|
# Les parcours sont affectés ensuite
|
||||||
if create:
|
form_parcours = tf[2].pop("parcours", [])
|
||||||
if not matiere_id:
|
if create:
|
||||||
# formulaire avec choix UE de rattachement
|
if not matiere_id:
|
||||||
ue = db.session.get(UniteEns, tf[2]["ue_id"])
|
# formulaire avec choix UE de rattachement
|
||||||
if ue is None:
|
ue = db.session.get(UniteEns, tf[2]["ue_id"])
|
||||||
raise ValueError("UE invalide")
|
if ue is None:
|
||||||
matiere = ue.matieres.first()
|
raise ValueError("UE invalide")
|
||||||
if matiere:
|
matiere = ue.matieres.first()
|
||||||
tf[2]["matiere_id"] = matiere.id
|
if matiere:
|
||||||
else:
|
tf[2]["matiere_id"] = matiere.id
|
||||||
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()
|
|
||||||
else:
|
else:
|
||||||
module.parcours = [
|
matiere_id = sco_edit_matiere.do_matiere_create(
|
||||||
db.session.get(ApcParcours, int(parcour_id_str))
|
{"ue_id": ue.id, "titre": ue.titre or "", "numero": 1},
|
||||||
for parcour_id_str in tf[2]["parcours"]
|
)
|
||||||
]
|
tf[2]["matiere_id"] = matiere_id
|
||||||
# Modifie les AC
|
|
||||||
if "app_critiques" in tf[2]:
|
tf[2]["semestre_id"] = ue.semestre_idx
|
||||||
module.app_critiques = [
|
module_id = do_module_create(tf[2])
|
||||||
db.session.get(ApcAppCritique, int(ac_id_str))
|
module = db.session.get(Module, module_id)
|
||||||
for ac_id_str in tf[2]["app_critiques"]
|
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)
|
# Modifie les AC
|
||||||
db.session.commit()
|
if "app_critiques" in tf[2]:
|
||||||
return flask.redirect(
|
module.app_critiques = [
|
||||||
url_for(
|
db.session.get(ApcAppCritique, int(ac_id_str))
|
||||||
"notes.ue_table",
|
for ac_id_str in tf[2]["app_critiques"]
|
||||||
scodoc_dept=g.scodoc_dept,
|
]
|
||||||
formation_id=formation.id,
|
db.session.add(module)
|
||||||
semestre_idx=tf[2]["semestre_id"] if is_apc else 1,
|
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):
|
def module_table(formation_id):
|
||||||
|
Loading…
Reference in New Issue
Block a user