From 8286a87c2f906976adda4033cdf1bf21b31c02ce Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Tue, 11 Mar 2025 18:44:15 +0100 Subject: [PATCH] Fix: import/export formations avec ApcAppCritique non uniques --- app/formations/formation_io.py | 8 ++++++-- app/models/but_refcomp.py | 7 ++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/formations/formation_io.py b/app/formations/formation_io.py index f6087994..8b2dfd42 100644 --- a/app/formations/formation_io.py +++ b/app/formations/formation_io.py @@ -439,13 +439,17 @@ def formation_import_xml(doc: str | bytes, import_tags=True, use_local_refcomp=F referentiel_competence_id is not None ): ac_code = child[1]["code"] + ac_libelle = child[1]["libelle"] + # Suppose que le couple (code,libelle) est unique dans le ref. comp. ac = ( - ApcAppCritique.query.filter_by(code=ac_code) + ApcAppCritique.query.filter_by( + code=ac_code, libelle=ac_libelle + ) .join(ApcNiveau) .join(ApcCompetence) .filter_by(referentiel_id=referentiel_competence_id) ).first() - if ac is not None: + if (ac is not None) and ac not in module.app_critiques: module.app_critiques.append(ac) db.session.add(module) else: diff --git a/app/models/but_refcomp.py b/app/models/but_refcomp.py index 69c3e0fc..635af3f9 100644 --- a/app/models/but_refcomp.py +++ b/app/models/but_refcomp.py @@ -644,15 +644,16 @@ class ApcAppCritique(models.ScoDocModel, XMLModel): return query def to_dict(self, with_code=False) -> dict: + "as a dict, with an oid guaranteed unique" if with_code: - return {"code": self.code, "libelle": self.libelle} - return {"libelle": self.libelle} + return {"code": self.code, "libelle": self.libelle, "oid": self.id} + return {"libelle": self.libelle, "oid": self.id} def get_label(self) -> str: return self.code + " - " + self.titre def __repr__(self): - return f"<{self.__class__.__name__} {self.code!r}>" + return f"<{self.__class__.__name__} id={self.id} {self.code!r}>" def get_saes(self): """Liste des SAE associƩes""" -- GitLab