Vérification et correction d'integrité semestre/UE/modules
This commit is contained in:
parent
d64e6632f0
commit
3a56364bbd
@ -261,7 +261,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
if current_app.config["ENV"] == "development":
|
if current_app.config["ENV"] == "development":
|
||||||
menuSemestre.append(
|
menuSemestre.append(
|
||||||
{
|
{
|
||||||
"title": "Check integrity",
|
"title": "Vérifier l'intégrité",
|
||||||
"endpoint": "notes.check_sem_integrity",
|
"endpoint": "notes.check_sem_integrity",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": True,
|
"enabled": True,
|
||||||
|
@ -2410,9 +2410,9 @@ sco_publish(
|
|||||||
|
|
||||||
|
|
||||||
@bp.route("/check_sem_integrity")
|
@bp.route("/check_sem_integrity")
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoImplement)
|
||||||
@scodoc7func(context)
|
@scodoc7func(context)
|
||||||
def check_sem_integrity(context, formsemestre_id, REQUEST):
|
def check_sem_integrity(context, formsemestre_id, REQUEST, fix=False):
|
||||||
"""Debug.
|
"""Debug.
|
||||||
Check that ue and module formations are consistents
|
Check that ue and module formations are consistents
|
||||||
"""
|
"""
|
||||||
@ -2423,11 +2423,14 @@ def check_sem_integrity(context, formsemestre_id, REQUEST):
|
|||||||
)
|
)
|
||||||
bad_ue = []
|
bad_ue = []
|
||||||
bad_sem = []
|
bad_sem = []
|
||||||
|
formations_set = set() # les formations mentionnées dans les UE et modules
|
||||||
for modimpl in modimpls:
|
for modimpl in modimpls:
|
||||||
mod = sco_edit_module.do_module_list(
|
mod = sco_edit_module.do_module_list(
|
||||||
context, {"module_id": modimpl["module_id"]}
|
context, {"module_id": modimpl["module_id"]}
|
||||||
)[0]
|
)[0]
|
||||||
|
formations_set.add(mod["formation_id"])
|
||||||
ue = sco_edit_ue.do_ue_list(context, {"ue_id": mod["ue_id"]})[0]
|
ue = sco_edit_ue.do_ue_list(context, {"ue_id": mod["ue_id"]})[0]
|
||||||
|
formations_set.add(ue["formation_id"])
|
||||||
if ue["formation_id"] != mod["formation_id"]:
|
if ue["formation_id"] != mod["formation_id"]:
|
||||||
modimpl["mod"] = mod
|
modimpl["mod"] = mod
|
||||||
modimpl["ue"] = ue
|
modimpl["ue"] = ue
|
||||||
@ -2436,15 +2439,46 @@ def check_sem_integrity(context, formsemestre_id, REQUEST):
|
|||||||
bad_sem.append(modimpl)
|
bad_sem.append(modimpl)
|
||||||
modimpl["mod"] = mod
|
modimpl["mod"] = mod
|
||||||
|
|
||||||
return (
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST=REQUEST)
|
html_sco_header.sco_header(context, REQUEST=REQUEST),
|
||||||
+ "<p>formation_id=%s" % sem["formation_id"]
|
"<p>formation_id=%s" % sem["formation_id"],
|
||||||
+ "<h2>Inconsistent UE/MOD:</h2>"
|
]
|
||||||
+ "<br/>".join([str(x) for x in bad_ue])
|
if bad_ue:
|
||||||
+ "<h2>Inconsistent SEM/MOD:</h2>"
|
H += [
|
||||||
+ "<br/>".join([str(x) for x in bad_sem])
|
"<h2>Modules d'une autre formation que leur UE:</h2>",
|
||||||
+ html_sco_header.sco_footer(context, REQUEST)
|
"<br/>".join([str(x) for x in bad_ue]),
|
||||||
|
]
|
||||||
|
if bad_sem:
|
||||||
|
H += [
|
||||||
|
"<h2>Module du semestre dans une autre formation:</h2>",
|
||||||
|
"<br/>".join([str(x) for x in bad_sem]),
|
||||||
|
]
|
||||||
|
if not bad_ue and not bad_sem:
|
||||||
|
H.append("<p>Aucun problème à signaler !</p>")
|
||||||
|
else:
|
||||||
|
log("check_sem_integrity: problem detected: formations_set=%s" % formations_set)
|
||||||
|
if sem["formation_id"] in formations_set:
|
||||||
|
formations_set.remove(sem["formation_id"])
|
||||||
|
if len(formations_set) == 1:
|
||||||
|
if fix:
|
||||||
|
log("check_sem_integrity: trying to fix %s" % formsemestre_id)
|
||||||
|
formation_id = formations_set.pop()
|
||||||
|
if sem["formation_id"] != formation_id:
|
||||||
|
sem["formation_id"] = formation_id
|
||||||
|
sco_formsemestre.do_formsemestre_edit(context, sem)
|
||||||
|
H.append("""<p class="alert">Problème réparé: vérifiez</p>""")
|
||||||
|
else:
|
||||||
|
H.append(
|
||||||
|
"""
|
||||||
|
<p class="alert">Problème détecté réparable:
|
||||||
|
<a href="check_sem_integrity?formsemestre_id=%s&fix=1">réparer maintenant</a></p>
|
||||||
|
"""
|
||||||
|
% (formsemestre_id,)
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
H.append("""<p class="alert">Problème détecté !</p>""")
|
||||||
|
|
||||||
|
return "\n".join(H) + html_sco_header.sco_footer(context, REQUEST)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/check_form_integrity")
|
@bp.route("/check_form_integrity")
|
||||||
|
Loading…
Reference in New Issue
Block a user