forked from ScoDoc/ScoDoc
Edition module: fix regression (app_critiques)
This commit is contained in:
parent
30f2888881
commit
74f3a7399f
@ -720,14 +720,21 @@ def module_edit(
|
|||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
"Module utilisé: il ne peut pas être changé de semestre !"
|
"Module utilisé: il ne peut pas être changé de semestre !"
|
||||||
)
|
)
|
||||||
# En APC, force le semestre égal à celui de l'UE
|
if not tf[2].get("code"):
|
||||||
|
raise ScoValueError("Le code du module doit être spécifié.")
|
||||||
|
|
||||||
if is_apc:
|
if is_apc:
|
||||||
|
# En APC, force le semestre égal à celui de l'UE
|
||||||
selected_ue = db.session.get(UniteEns, tf[2]["ue_id"])
|
selected_ue = db.session.get(UniteEns, tf[2]["ue_id"])
|
||||||
if selected_ue is None:
|
if selected_ue is None:
|
||||||
raise ValueError("UE invalide")
|
raise ValueError("UE invalide")
|
||||||
tf[2]["semestre_id"] = selected_ue.semestre_idx
|
tf[2]["semestre_id"] = selected_ue.semestre_idx
|
||||||
if not tf[2].get("code"):
|
# Et vérifie que les AC sont bien dans ce ref. comp.
|
||||||
raise ScoValueError("Le code du module doit être spécifié.")
|
if "app_critiques" in tf[2]:
|
||||||
|
tf[2]["app_critiques"] = Module.convert_app_critiques(
|
||||||
|
tf[2]["app_critiques"], formation.referentiel_competence
|
||||||
|
)
|
||||||
|
|
||||||
# Check unicité code module dans la formation
|
# Check unicité code module dans la formation
|
||||||
# ??? TODO
|
# ??? TODO
|
||||||
#
|
#
|
||||||
@ -741,12 +748,6 @@ def module_edit(
|
|||||||
db.session.get(ApcParcours, int(parcour_id_str))
|
db.session.get(ApcParcours, int(parcour_id_str))
|
||||||
for parcour_id_str in form_parcours
|
for parcour_id_str in form_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"]
|
|
||||||
]
|
|
||||||
db.session.add(module)
|
db.session.add(module)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
module.formation.invalidate_cached_sems()
|
module.formation.invalidate_cached_sems()
|
||||||
|
@ -8,6 +8,7 @@ from app import db, log
|
|||||||
from app import models
|
from app import models
|
||||||
from app.models import APO_CODE_STR_LEN
|
from app.models import APO_CODE_STR_LEN
|
||||||
from app.models.but_refcomp import (
|
from app.models.but_refcomp import (
|
||||||
|
ApcAppCritique,
|
||||||
ApcParcours,
|
ApcParcours,
|
||||||
ApcReferentielCompetences,
|
ApcReferentielCompetences,
|
||||||
app_critiques_modules,
|
app_critiques_modules,
|
||||||
@ -110,9 +111,30 @@ class Module(models.ScoDocModel):
|
|||||||
if key in fs_empty_stored_as_nulls and value == "":
|
if key in fs_empty_stored_as_nulls and value == "":
|
||||||
value = None
|
value = None
|
||||||
args_dict[key] = value
|
args_dict[key] = value
|
||||||
|
if key == "app_critiques": # peut être liste d'ApcAppCritique ou d'ids
|
||||||
|
args_dict[key] = cls.convert_app_critiques(value)
|
||||||
|
|
||||||
return args_dict
|
return args_dict
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def convert_app_critiques(
|
||||||
|
app_crits: list, ref_comp: ApcReferentielCompetences | None = None
|
||||||
|
) -> list[ApcAppCritique]:
|
||||||
|
""" """
|
||||||
|
res = []
|
||||||
|
for x in app_crits:
|
||||||
|
app_crit = (
|
||||||
|
x
|
||||||
|
if isinstance(x, ApcAppCritique)
|
||||||
|
else db.session.get(ApcAppCritique, x)
|
||||||
|
)
|
||||||
|
if app_crit is None:
|
||||||
|
raise ScoValueError("app_critiques invalid")
|
||||||
|
if ref_comp and app_crit.niveau.competence.referentiel_id != ref_comp.id:
|
||||||
|
raise ScoValueError("app_critique hors référentiel !")
|
||||||
|
res.append(app_crit)
|
||||||
|
return res
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def filter_model_attributes(cls, args: dict, excluded: set[str] = None) -> dict:
|
def filter_model_attributes(cls, args: dict, excluded: set[str] = None) -> dict:
|
||||||
"""Returns a copy of dict with only the keys belonging to the Model and not in excluded.
|
"""Returns a copy of dict with only the keys belonging to the Model and not in excluded.
|
||||||
|
Loading…
Reference in New Issue
Block a user