1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
21 import types,traceback
28 Retourne 1 si self est une MCList (liste de mots-clés), 0 sinon (défaut)
32 def get_index(self,objet):
34 Retourne la position d'objet dans la liste self
36 return self.data.index(objet)
38 def ajout_possible(self):
40 Méthode booléenne qui retourne 1 si on peut encore ajouter une occurrence
41 de l'élément que contient self, 0 sinon
43 max = self.data[0].definition.max
52 def isrepetable(self):
54 Indique si l'objet est répétable.
55 Retourne 1 si le mot-clé facteur self peut être répété
56 Retourne 0 dans le cas contraire
58 if self.data[0].definition.max > 1:
66 Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est
68 return self.data[0].definition.statut=='o'
70 def suppentite(self,obj):
72 Supprime le mot cle facteur obj de la MCLIST
79 CONNECTOR.Emit(self,"supp",obj)
80 self.update_condition_bloc()
85 def addentite(self,obj,pos=None):
87 Ajoute le mot cle facteur obj a la MCLIST a la position pos
88 Retourne None si l'ajout est impossible
90 if type(obj)==types.StringType :
91 # on est en mode création d'un motcle
92 raise "traitement non prevu"
94 if not self.ajout_possible():
95 self.jdc.send_message("L'objet %s ne peut pas être ajouté" % obj.nom)
98 if self.nom != obj.nom:
104 # Traitement du copier coller seulement
105 # Les autres cas d'ajout sont traites dans MCFACT
107 obj.verif_existence_sd()
108 obj.reparent(self.parent)
113 CONNECTOR.Emit(self,"add",obj)
115 self.update_condition_bloc()
118 def liste_mc_presents(self):
121 def update_concept(self,sd):
122 for child in self.data :
123 child.update_concept(sd)
125 def delete_concept(self,sd):
129 Fonction : Mettre a jour les fils de l objet suite à la disparition
131 Seuls les mots cles simples MCSIMP font un traitement autre
132 que de transmettre aux fils
134 for child in self.data :
135 child.delete_concept(sd)
137 def replace_concept(self,old_sd,sd):
140 - old_sd=concept remplacé
142 Fonction : Mettre a jour les fils de l objet suite au remplacement
145 for child in self.data :
146 child.replace_concept(old_sd,sd)
149 return self.data[0].definition.get_docu()
151 def get_liste_mc_inconnus(self):
153 Retourne la liste des mots-clés inconnus dans self
156 for mcfact in self.data :
157 if mcfact.isvalid() : continue
158 l_child = mcfact.get_liste_mc_inconnus()
165 def verif_condition_regles(self,liste_presents):
167 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
168 en fonction de la liste des mots-clés présents
170 # Sans objet pour une liste de mots clés facteurs
173 def deep_update_condition_bloc(self):
175 Parcourt l'arborescence des mcobject et realise l'update
176 des blocs conditionnels par appel de la methode update_condition_bloc
178 #print "deep_update_condition_bloc",self
179 for mcfact in self.data :
180 mcfact.deep_update_condition_bloc()
182 def update_condition_bloc(self):
184 Propage la mise a jour des conditions au parent.
185 Une liste ne fait pas de traitement sur les conditions
187 if self.parent: self.parent.update_condition_bloc()
189 def verif_condition_bloc(self):
191 Evalue les conditions de tous les blocs fils possibles
192 (en fonction du catalogue donc de la définition) de self et
193 retourne deux listes :
194 - la première contient les noms des blocs à rajouter
195 - la seconde contient les noms des blocs à supprimer
197 # Sans objet pour une liste de mots clés facteurs (a voir !!!)
200 def init_modif(self):
202 Met l'état de l'objet à modified et propage au parent
203 qui vaut None s'il n'existe pas
205 self.state = 'modified'
207 self.parent.init_modif()
211 Méthode appelée après qu'une modification a été faite afin de déclencher
212 d'éventuels traitements post-modification
214 #print "fin_modif",self
215 CONNECTOR.Emit(self,"valid")
217 self.parent.fin_modif()
219 def get_genealogie(self):
221 Retourne la liste des noms des ascendants.
222 Un objet MCList n'est pas enregistré dans la genealogie.
223 XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
226 return self.parent.get_genealogie()
230 def get_liste_mc_ordonnee_brute(self,liste,dico):
232 Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
233 d'une entité composée dont le chemin complet est donné sous forme
234 d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
237 objet_cata = dico[arg]
238 dico=objet_cata.entites
239 return objet_cata.ordre_mc
241 def verif_existence_sd(self):
243 Vérifie que les structures de données utilisées dans self existent bien dans le contexte
244 avant étape, sinon enlève la référence à ces concepts
246 for motcle in self.data :
247 motcle.verif_existence_sd()
251 Retourne la chaine d'aide contenue dans le catalogue
252 en tenant compte de la langue
255 return self.data[0].get_fr()
261 Retourne l'objet normalisé. Une liste est déjà normalisée
265 def update_mc_global(self):
267 Met a jour les mots cles globaux enregistrés dans l'étape parente
268 et dans le jdc parent.
269 Une liste ne peut pas etre globale. Elle se contente de passer
270 la requete a ses fils.
272 for motcle in self.data :
273 motcle.update_mc_global()
275 def delete_mc_global(self):
276 for motcle in self.data :
277 motcle.delete_mc_global()
280 # print "__del__",self