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
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):
"""
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
+
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
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