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()
86 def addentite(self,obj,pos=None):
88 Ajoute le mot cle facteur obj a la MCLIST a la position pos
89 Retourne None si l'ajout est impossible
91 if type(obj)==types.StringType :
92 # on est en mode création d'un motcle
93 raise "traitement non prevu"
95 if not self.ajout_possible():
96 self.jdc.appli.affiche_alerte("Erreur","L'objet %s ne peut pas être ajouté" % obj.nom)
99 if self.nom != obj.nom:
105 # Traitement du copier coller seulement
106 # Les autres cas d'ajout sont traites dans MCFACT
108 obj.verif_existence_sd()
109 obj.reparent(self.parent)
114 CONNECTOR.Emit(self,"add",obj)
116 self.update_condition_bloc()
119 def liste_mc_presents(self):
122 def update_concept(self,sd):
123 for child in self.data :
124 child.update_concept(sd)
126 def delete_concept(self,sd):
130 Fonction : Mettre a jour les fils de l objet suite à la disparition
132 Seuls les mots cles simples MCSIMP font un traitement autre
133 que de transmettre aux fils
135 for child in self.data :
136 child.delete_concept(sd)
138 def replace_concept(self,old_sd,sd):
141 - old_sd=concept remplacé
143 Fonction : Mettre a jour les fils de l objet suite au remplacement
146 for child in self.data :
147 child.replace_concept(old_sd,sd)
150 return self.data[0].definition.get_docu()
152 def get_liste_mc_inconnus(self):
154 Retourne la liste des mots-clés inconnus dans self
157 for mcfact in self.data :
158 if mcfact.isvalid() : continue
159 l_child = mcfact.get_liste_mc_inconnus()
166 def verif_condition_regles(self,liste_presents):
168 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
169 en fonction de la liste des mots-clés présents
171 # Sans objet pour une liste de mots clés facteurs
174 def deep_update_condition_bloc(self):
176 Parcourt l'arborescence des mcobject et realise l'update
177 des blocs conditionnels par appel de la methode update_condition_bloc
179 #print "deep_update_condition_bloc",self
180 for mcfact in self.data :
181 mcfact.deep_update_condition_bloc()
183 def update_condition_bloc(self):
185 Propage la mise a jour des conditions au parent.
186 Une liste ne fait pas de traitement sur les conditions
188 if self.parent: self.parent.update_condition_bloc()
190 def verif_condition_bloc(self):
192 Evalue les conditions de tous les blocs fils possibles
193 (en fonction du catalogue donc de la définition) de self et
194 retourne deux listes :
195 - la première contient les noms des blocs à rajouter
196 - la seconde contient les noms des blocs à supprimer
198 # Sans objet pour une liste de mots clés facteurs (a voir !!!)
201 def init_modif(self):
203 Met l'état de l'objet à modified et propage au parent
204 qui vaut None s'il n'existe pas
206 self.state = 'modified'
208 self.parent.init_modif()
212 Méthode appelée après qu'une modification a été faite afin de déclencher
213 d'éventuels traitements post-modification
215 #print "fin_modif",self
216 CONNECTOR.Emit(self,"valid")
218 self.parent.fin_modif()
220 def get_genealogie(self):
222 Retourne la liste des noms des ascendants.
223 Un objet MCList n'est pas enregistré dans la genealogie.
224 XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
227 return self.parent.get_genealogie()
231 def get_liste_mc_ordonnee_brute(self,liste,dico):
233 Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
234 d'une entité composée dont le chemin complet est donné sous forme
235 d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
238 objet_cata = dico[arg]
239 dico=objet_cata.entites
240 return objet_cata.ordre_mc
242 def verif_existence_sd(self):
244 Vérifie que les structures de données utilisées dans self existent bien dans le contexte
245 avant étape, sinon enlève la référence à ces concepts
247 for motcle in self.data :
248 motcle.verif_existence_sd()
252 Retourne la chaine d'aide contenue dans le catalogue
253 en tenant compte de la langue
256 return self.data[0].get_fr()
262 Retourne l'objet normalisé. Une liste est déjà normalisée
266 def update_mc_global(self):
268 Met a jour les mots cles globaux enregistrés dans l'étape parente
269 et dans le jdc parent.
270 Une liste ne peut pas etre globale. Elle se contente de passer
271 la requete a ses fils.
273 for motcle in self.data :
274 motcle.update_mc_global()
276 def delete_mc_global(self):
277 for motcle in self.data :
278 motcle.delete_mc_global()
281 # print "__del__",self