diff --git a/app/formations/formation_io.py b/app/formations/formation_io.py index f6087994f649b3ec2bae9b3ebe87498529d7d894..8b2dfd4218fb8bc16265eef74c3c3ccffdb868d1 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 69c3e0fc59926ba1925bf165c4ee98da3bdf06c7..635af3f9c4d7c64b734b9f391e6197c6f3ecbdec 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"""