From ddacf57639466b144c552306755957b231aab40e Mon Sep 17 00:00:00 2001 From: eficas <> Date: Wed, 15 May 2002 14:15:48 +0000 Subject: [PATCH] correction methode purge_liste pour ne plus purger le mot cle present de la liste des presents --- Ihm/I_EXCLUS.py | 3 ++- Ihm/I_MCCOMPO.py | 14 ++++++++++++++ Ihm/I_MCLIST.py | 11 +++++++++++ Ihm/I_PRESENT_ABSENT.py | 5 +++-- Ihm/I_UN_PARMI.py | 3 ++- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Ihm/I_EXCLUS.py b/Ihm/I_EXCLUS.py index e53ead8e..91428f2c 100644 --- a/Ihm/I_EXCLUS.py +++ b/Ihm/I_EXCLUS.py @@ -13,7 +13,8 @@ class EXCLUS(I_REGLE.REGLE): if not regle_active : return liste_a_purger for mc in self.mcs: - if mc in liste_a_purger: + # Il ne faut pas purger un mot cle present. Sa cardinalite est verifiee par ailleurs + if mc in liste_a_purger and mc not in liste_mc_presents: liste_a_purger.remove(mc) return liste_a_purger diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index 0fcab2e6..45f365fc 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -95,6 +95,20 @@ class MCCOMPO(I_OBJECT.OBJECT): liste.remove(k) if self.definition.entites[k].label=='BLOC': liste.remove(k) + # Pour corriger les exces qui pourraient etre commis dans la methode purge_liste + # des regles, on essaie de compenser comme suit : + # on ajoute les mots cles facteurs presents dont l'occurence n'est pas atteinte + for k in liste_mc_presents: + if k in liste:continue + objet = self.get_child(k,restreint = 'oui') + if isinstance(objet,MCFACT): + # un mot-clé facteur ne peut pas être répété plus de self.max fois + if objet.definition.max > 1: + liste.append(k) + elif isinstance(objet,MCList): + nb_occur_maxi = objet[0].definition.max + if len(objet) < nb_occur_maxi: + liste.append(k) return liste def liste_mc_presents(self): diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index fc4afcf6..48c306ed 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -161,3 +161,14 @@ class MCList: """ for motcle in self.data : motcle.verif_existence_sd() + + def get_sd_utilisees(self): + """ + Retourne la liste des concepts qui sont utilisés à l'intérieur de self + ( comme valorisation d'un MCS) + """ + l=[] + for motcle in self.data: + l.extend(motcle.get_sd_utilisees()) + return l + diff --git a/Ihm/I_PRESENT_ABSENT.py b/Ihm/I_PRESENT_ABSENT.py index 5ddd4a80..133ffdac 100644 --- a/Ihm/I_PRESENT_ABSENT.py +++ b/Ihm/I_PRESENT_ABSENT.py @@ -9,8 +9,9 @@ class PRESENT_ABSENT(I_REGLE.REGLE): if self.mcs[0] in liste_mc_presents:regle_active=1 if not regle_active : return liste_a_purger - for mc in self.mcs: - if mc in liste_a_purger: + # Il ne faut pas purger le mot cle present + for mc in self.mcs[1:]: + if mc in liste_a_purger : liste_a_purger.remove(mc) return liste_a_purger diff --git a/Ihm/I_UN_PARMI.py b/Ihm/I_UN_PARMI.py index a600514d..90f0a1f7 100644 --- a/Ihm/I_UN_PARMI.py +++ b/Ihm/I_UN_PARMI.py @@ -14,8 +14,9 @@ class UN_PARMI(I_REGLE.REGLE): if not regle_active : return liste_a_purger # Si un des mots clés est présent, on les enlève tous + # sauf celui ci for mc in self.mcs: - if mc in liste_a_purger: + if mc in liste_a_purger and mc not in liste_mc_presents: liste_a_purger.remove(mc) return liste_a_purger -- 2.39.2