From c882a96556fd863072777692959b822daf6d98b4 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 18 Dec 2021 17:39:03 +0100 Subject: [PATCH] Import formations XML: anciennes ou BUT --- app/scodoc/sco_edit_ue.py | 10 ++++++++-- app/scodoc/sco_formations.py | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index 929911f6..cdc83a04 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -104,7 +104,10 @@ def do_ue_create(args): # check duplicates ues = ue_list({"formation_id": args["formation_id"], "acronyme": args["acronyme"]}) if ues: - raise ScoValueError('Acronyme d\'UE "%s" déjà utilisé !' % args["acronyme"]) + raise ScoValueError( + f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé ! + (chaque UE doit avoir un acronyme unique dans la formation)""" + ) # create ue_id = _ueEditor.create(cnx, args) @@ -1146,7 +1149,10 @@ def do_ue_edit(args, bypass_lock=False, dont_invalidate_cache=False): new_acro = args["acronyme"] ues = ue_list({"formation_id": ue["formation_id"], "acronyme": new_acro}) if ues and ues[0]["ue_id"] != ue_id: - raise ScoValueError('Acronyme d\'UE "%s" déjà utilisé !' % args["acronyme"]) + raise ScoValueError( + f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé ! + (chaque UE doit avoir un acronyme unique dans la formation)""" + ) # On ne peut pas supprimer le code UE: if "ue_code" in args and not args["ue_code"]: diff --git a/app/scodoc/sco_formations.py b/app/scodoc/sco_formations.py index b2eaef98..6bff40c5 100644 --- a/app/scodoc/sco_formations.py +++ b/app/scodoc/sco_formations.py @@ -230,9 +230,10 @@ def formation_import_xml(doc: str, import_tags=True): ue_id = sco_edit_ue.do_ue_create(ue_info[1]) if xml_ue_id: ues_old2new[xml_ue_id] = ue_id - ue_reference = int(ue_info[1].get("reference")) + # élément optionnel présent dans les exports BUT: + ue_reference = ue_info[1].get("reference") if ue_reference: - ue_reference_to_id[ue_reference] = ue_id + ue_reference_to_id[int(ue_reference)] = ue_id # -- create matieres for mat_info in ue_info[2]: assert mat_info[0] == "matiere"