Fix: clonage formation avec UE BUT externes

This commit is contained in:
Emmanuel Viennet 2023-06-13 21:28:37 +02:00
parent c73581c52f
commit 73023b7806
4 changed files with 9 additions and 5 deletions

View File

@ -317,7 +317,7 @@ class FormSemestre(db.Model):
} }
) )
ues = sem_ues.values() ues = sem_ues.values()
return sorted(ues, key=attrgetter("numero")) return sorted(ues, key=attrgetter("numero", "acronyme"))
else: else:
sem_ues = db.session.query(UniteEns).filter( sem_ues = db.session.query(UniteEns).filter(
ModuleImpl.formsemestre_id == self.id, ModuleImpl.formsemestre_id == self.id,

View File

@ -1,5 +1,6 @@
"""ScoDoc 9 models : Modules """ScoDoc 9 models : Modules
""" """
from operator import attrgetter
from flask import current_app from flask import current_app
from app import db from app import db
@ -229,7 +230,7 @@ class Module(db.Model):
"""delete coef""" """delete coef"""
if self.formation.has_locked_sems(self.ue.semestre_idx): if self.formation.has_locked_sems(self.ue.semestre_idx):
current_app.logguer.info( current_app.logguer.info(
f"delete_ue_coef: locked formation, ignoring request" "delete_ue_coef: locked formation, ignoring request"
) )
raise ScoValueError("Formation verrouillée") raise ScoValueError("Formation verrouillée")
ue_coef = ModuleUECoef.query.get((self.id, ue.id)) ue_coef = ModuleUECoef.query.get((self.id, ue.id))
@ -238,10 +239,10 @@ class Module(db.Model):
self.formation.invalidate_module_coefs() self.formation.invalidate_module_coefs()
def get_ue_coefs_sorted(self): 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 # je n'ai pas su mettre un order_by sur le backref sans avoir
# à redéfinir les relationships... # à 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( def ue_coefs_list(
self, include_zeros=True, ues: list["UniteEns"] = None self, include_zeros=True, ues: list["UniteEns"] = None

View File

@ -443,6 +443,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
{ {
"input_type": "boolcheckbox", "input_type": "boolcheckbox",
"title": "UE externe", "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", "explanation": "réservé pour les capitalisations d'UE effectuées à l'extérieur de l'établissement",
}, },
), ),

View File

@ -626,7 +626,9 @@ def formation_list_table() -> GenTable:
def formation_create_new_version(formation_id, redirect=True): def formation_create_new_version(formation_id, redirect=True):
"duplicate formation, with new version number" "duplicate formation, with new version number"
formation = Formation.query.get_or_404(formation_id) 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) xml_data = resp.get_data(as_text=True)
new_id, modules_old2new, ues_old2new = formation_import_xml( new_id, modules_old2new, ues_old2new = formation_import_xml(
xml_data, use_local_refcomp=True xml_data, use_local_refcomp=True