diff --git a/app/__init__.py b/app/__init__.py index a883f89a..e72f75d1 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -301,9 +301,11 @@ def clear_scodoc_cache(): # --------- Logging -def log(msg: str): +def log(msg: str, silent_test=True): """log a message. If Flask app, use configured logger, else stderr.""" + if silent_test and current_app.config["TESTING"]: + return try: dept = getattr(g, "scodoc_dept", "") msg = f" ({dept}) {msg}" diff --git a/app/scodoc/sco_edit_formation.py b/app/scodoc/sco_edit_formation.py index 7c666d16..b52c3a53 100644 --- a/app/scodoc/sco_edit_formation.py +++ b/app/scodoc/sco_edit_formation.py @@ -348,7 +348,7 @@ def module_move(module_id, after=0, REQUEST=None, redirect=1): ) -def ue_move(ue_id, after=0, REQUEST=None, redirect=1): +def ue_move(ue_id, after=0, redirect=1): """Move UE before/after previous one (decrement/increment numero)""" o = sco_edit_ue.do_ue_list({"ue_id": ue_id})[0] # log('ue_move %s (#%s) after=%s' % (ue_id, o['numero'], after)) diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index e19e7e17..b717daea 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -115,7 +115,7 @@ def do_ue_create(args): return r -def do_ue_delete(ue_id, delete_validations=False, REQUEST=None, force=False): +def do_ue_delete(ue_id, delete_validations=False, force=False): "delete UE and attached matieres (but not modules)" from app.scodoc import sco_formations from app.scodoc import sco_parcours_dut @@ -420,10 +420,10 @@ def ue_delete( cancel_url="ue_list?formation_id=%s" % ue["formation_id"], ) - return do_ue_delete(ue_id, delete_validations=delete_validations, REQUEST=REQUEST) + return do_ue_delete(ue_id, delete_validations=delete_validations) -def ue_list(formation_id=None, msg="", REQUEST=None): +def ue_list(formation_id=None, msg=""): """Liste des matières et modules d'une formation, avec liens pour editer (si non verrouillée). """ @@ -484,22 +484,29 @@ def ue_list(formation_id=None, msg="", REQUEST=None): ] if locked: H.append( - """
Cette formation est verrouillée car %d semestres verrouillés s'y réferent. -Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module), vous devez: + f"""
Cette formation est verrouillée car +{len(locked)} semestres verrouillés s'y réferent. +Si vous souhaitez modifier cette formation (par exemple pour y ajouter un module), +vous devez:
' + msg + "
") if has_duplicate_ue_codes: H.append( - """pas de semestres extérieurs possibles
""") return "\n".join(H) + F # Formulaire - semestre_ids_str = [str(x) for x in sorted(semestre_ids)] + semestre_ids_list = sorted(semestre_ids) + semestre_ids_labels = [f"S{x}" for x in semestre_ids_list] descr = [ ("formsemestre_id", {"input_type": "hidden"}), ("etudid", {"input_type": "hidden"}), @@ -137,8 +138,8 @@ def formsemestre_ext_create_form(etudid, formsemestre_id, REQUEST=None): { "input_type": "menu", "title": "Indice du semestre dans le cursus", - "allowed_values": semestre_ids_str, - "labels": semestre_ids_str, + "allowed_values": semestre_ids_list, + "labels": semestre_ids_labels, }, ), ( diff --git a/app/scodoc/sco_formsemestre_inscriptions.py b/app/scodoc/sco_formsemestre_inscriptions.py index 627a2844..99e4f26e 100644 --- a/app/scodoc/sco_formsemestre_inscriptions.py +++ b/app/scodoc/sco_formsemestre_inscriptions.py @@ -478,9 +478,9 @@ def formsemestre_inscription_option(etudid, formsemestre_id, REQUEST=None): if ins["moduleimpl_id"] == mod["moduleimpl_id"]: key = "moduleimpls_%s" % ue_id if key in initvalues: - initvalues[key].append(mod["moduleimpl_id"]) + initvalues[key].append(str(mod["moduleimpl_id"])) else: - initvalues[key] = [mod["moduleimpl_id"]] + initvalues[key] = [str(mod["moduleimpl_id"])] break descr = [ @@ -506,7 +506,7 @@ def formsemestre_inscription_option(etudid, formsemestre_id, REQUEST=None): "sec_%s" % ue_id, { "input_type": "separator", - "title": """%s : inscrire|désinscrire à tous les modules""" + "title": """%s : inscrire | désinscrire à tous les modules""" % (ue_descr, ue_id, ue_id), }, ) @@ -518,7 +518,7 @@ def formsemestre_inscription_option(etudid, formsemestre_id, REQUEST=None): "input_type": "checkbox", "title": "", "dom_id": ue_id, - "allowed_values": modimpls_by_ue_ids[ue_id], + "allowed_values": [str(x) for x in modimpls_by_ue_ids[ue_id]], "labels": modimpls_by_ue_names[ue_id], "vertical": True, }, @@ -569,18 +569,21 @@ function chkbx_select(field_id, state) { insdict[ins["moduleimpl_id"]] = ins for ue in ues: ue_id = ue["ue_id"] - for moduleimpl_id in tf[2]["moduleimpls_%s" % ue_id]: + for moduleimpl_id in [int(x) for x in tf[2]["moduleimpls_%s" % ue_id]]: if moduleimpl_id in a_desinscrire: del a_desinscrire[moduleimpl_id] # supprime ceux auxquel pas inscrit - for moduleimpl_id in a_desinscrire.keys(): + moduleimpls_a_desinscrire = list(a_desinscrire.keys()) + for moduleimpl_id in moduleimpls_a_desinscrire: if moduleimpl_id not in insdict: del a_desinscrire[moduleimpl_id] a_inscrire = set() for ue in ues: ue_id = ue["ue_id"] - a_inscrire.update(tf[2]["moduleimpls_%s" % ue_id]) + a_inscrire.update( + int(x) for x in tf[2]["moduleimpls_%s" % ue_id] + ) # conversion en int ! # supprime ceux auquel deja inscrit: for ins in inscr: if ins["moduleimpl_id"] in a_inscrire: @@ -638,8 +641,8 @@ function chkbx_select(field_id, state) { + "" ) H.append("") - modulesimpls_ainscrire = ",".join(a_inscrire) - modulesimpls_adesinscrire = ",".join(a_desinscrire) + modulesimpls_ainscrire = ",".join(str(x) for x in a_inscrire) + modulesimpls_adesinscrire = ",".join(str(x) for x in a_desinscrire) H.append( """