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("