From b728e06f272a3fee95682864de0b7c036fe6dca3 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 23 Feb 2023 21:19:57 +0100 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20de=20nouvelles=20versions=20de?= =?UTF-8?q?=20formations:=20am=C3=A9lioration=20dialogue,=20propose=20syst?= =?UTF-8?q?=C3=A9matriquement=20d'embarquer=20des=20formsemestres?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_edit_formation.py | 6 +- app/scodoc/sco_edit_ue.py | 33 +++-- app/scodoc/sco_formations.py | 13 +- app/scodoc/sco_formsemestre_edit.py | 178 +++++++++++++++----------- app/scodoc/sco_formsemestre_status.py | 5 +- app/scodoc/sco_utils.py | 30 ++--- app/static/css/scodoc.css | 4 - app/views/notes.py | 12 +- tests/unit/test_formsemestre.py | 4 +- 9 files changed, 167 insertions(+), 118 deletions(-) diff --git a/app/scodoc/sco_edit_formation.py b/app/scodoc/sco_edit_formation.py index 8e75e4a0d..384ec0650 100644 --- a/app/scodoc/sco_edit_formation.py +++ b/app/scodoc/sco_edit_formation.py @@ -68,10 +68,12 @@ def formation_delete(formation_id=None, dialog_confirmed=False): ) for sem in sems: H.append( - '
  • %(titremois)s
  • ' + '
  • %(titremois)s
  • ' % sem ) - H.append('

    Revenir

    ' % scu.NotesURL()) + H.append( + '

    Revenir

    ' % scu.NotesURL() + ) else: if not dialog_confirmed: return scu.confirm_dialog( diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index 9f4900bc4..8fe5fd021 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -118,7 +118,7 @@ def do_ue_create(args): f"""Acronyme d'UE "{args['acronyme']}" déjà utilisé ! (chaque UE doit avoir un acronyme unique dans la formation)""" ) - if not "ue_code" in args: + if (not "ue_code" in args) or (not args["ue_code"].strip()): # évite les conflits de code while True: cursor = db.session.execute("select notes_newid_ucod();") @@ -405,6 +405,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No "explanation": """code interne (non vide). Toutes les UE partageant le même code (et le même code de formation) sont compatibles (compensation de semestres, capitalisation d'UE). Voir liste ci-dessous.""", + "allow_null": False, }, ), ( @@ -663,6 +664,13 @@ def ue_table(formation_id=None, semestre_idx=1, msg=""): # was ue_list ues_externes_obj = UniteEns.query.filter_by( formation_id=formation_id, is_external=True ) + # liste ordonnée des formsemestres de cette formation: + formsemestres = sorted( + FormSemestre.query.filter_by(formation_id=formation_id).all(), + key=lambda s: s.sort_key(), + reverse=True, + ) + if is_apc: # Pour faciliter la transition des anciens programmes non APC for ue in ues_obj: @@ -901,18 +909,29 @@ du programme" (menu "Semestre") si vous avez un semestre en cours); """ ) H.append("