From 73023b7806a61623e274cf95d77ca5902cb96d2d Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 13 Jun 2023 21:28:37 +0200 Subject: [PATCH] Fix: clonage formation avec UE BUT externes --- app/models/formsemestre.py | 2 +- app/models/modules.py | 7 ++++--- app/scodoc/sco_edit_ue.py | 1 + app/scodoc/sco_formations.py | 4 +++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 24468c7f..680e3ff9 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -317,7 +317,7 @@ class FormSemestre(db.Model): } ) ues = sem_ues.values() - return sorted(ues, key=attrgetter("numero")) + return sorted(ues, key=attrgetter("numero", "acronyme")) else: sem_ues = db.session.query(UniteEns).filter( ModuleImpl.formsemestre_id == self.id, diff --git a/app/models/modules.py b/app/models/modules.py index ed155fdd..cfc6a994 100644 --- a/app/models/modules.py +++ b/app/models/modules.py @@ -1,5 +1,6 @@ """ScoDoc 9 models : Modules """ +from operator import attrgetter from flask import current_app from app import db @@ -229,7 +230,7 @@ class Module(db.Model): """delete coef""" if self.formation.has_locked_sems(self.ue.semestre_idx): current_app.logguer.info( - f"delete_ue_coef: locked formation, ignoring request" + "delete_ue_coef: locked formation, ignoring request" ) raise ScoValueError("Formation verrouillée") ue_coef = ModuleUECoef.query.get((self.id, ue.id)) @@ -238,10 +239,10 @@ class Module(db.Model): self.formation.invalidate_module_coefs() def get_ue_coefs_sorted(self): - "les coefs d'UE, trié par numéro d'UE" + "les coefs d'UE, trié par numéro et acronyme d'UE" # je n'ai pas su mettre un order_by sur le backref sans avoir # à redéfinir les relationships... - return sorted(self.ue_coefs, key=lambda x: x.ue.numero) + return sorted(self.ue_coefs, key=attrgetter("numero", "acronyme")) def ue_coefs_list( self, include_zeros=True, ues: list["UniteEns"] = None diff --git a/app/scodoc/sco_edit_ue.py b/app/scodoc/sco_edit_ue.py index cd286f89..f41804f1 100644 --- a/app/scodoc/sco_edit_ue.py +++ b/app/scodoc/sco_edit_ue.py @@ -443,6 +443,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No { "input_type": "boolcheckbox", "title": "UE externe", + "readonly": not create, # ne permet pas de transformer une UE existante en externe "explanation": "réservé pour les capitalisations d'UE effectuées à l'extérieur de l'établissement", }, ), diff --git a/app/scodoc/sco_formations.py b/app/scodoc/sco_formations.py index cf0239b9..981908c9 100644 --- a/app/scodoc/sco_formations.py +++ b/app/scodoc/sco_formations.py @@ -626,7 +626,9 @@ def formation_list_table() -> GenTable: def formation_create_new_version(formation_id, redirect=True): "duplicate formation, with new version number" formation = Formation.query.get_or_404(formation_id) - resp = formation_export(formation_id, export_ids=True, format="xml") + resp = formation_export( + formation_id, export_ids=True, export_external_ues=True, format="xml" + ) xml_data = resp.get_data(as_text=True) new_id, modules_old2new, ues_old2new = formation_import_xml( xml_data, use_local_refcomp=True