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
76 CONNECTOR.Emit(self,"supp",obj)
80 def addentite(self,obj,pos=None):
82 Ajoute le mot cle facteur obj a la MCLIST a la position pos
83 Retourne None si l'ajout est impossible
85 if type(obj)==types.StringType :
86 # on est en mode création d'un motcle
87 raise "traitement non prevu"
89 if not self.ajout_possible():
90 self.jdc.send_message("L'objet %s ne peut pas être ajouté" % obj.nom)
93 if self.nom != obj.nom:
99 # Traitement du copier coller seulement
100 # Les autres cas d'ajout sont traites dans MCFACT
102 obj.verif_existence_sd()
103 obj.reparent(self.parent)
108 CONNECTOR.Emit(self,"add",obj)
112 def liste_mc_presents(self):
115 def update_concept(self,sd):
116 for child in self.data :
117 child.update_concept(sd)
119 def delete_concept(self,sd):
123 Fonction : Mettre a jour les fils de l objet suite à la disparition
125 Seuls les mots cles simples MCSIMP font un traitement autre
126 que de transmettre aux fils
128 for child in self.data :
129 child.delete_concept(sd)
131 def replace_concept(self,old_sd,sd):
134 - old_sd=concept remplacé
136 Fonction : Mettre a jour les fils de l objet suite au remplacement
139 for child in self.data :
140 child.replace_concept(old_sd,sd)
143 return self.data[0].definition.get_docu()
145 def get_liste_mc_inconnus(self):
147 Retourne la liste des mots-clés inconnus dans self
150 for mcfact in self.data :
151 if mcfact.isvalid() : continue
152 l_child = mcfact.get_liste_mc_inconnus()
159 def verif_condition_regles(self,liste_presents):
161 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
162 en fonction de la liste des mots-clés présents
164 # Sans objet pour une liste de mots clés facteurs
167 def deep_update_condition_bloc(self):
169 Parcourt l'arborescence des mcobject et realise l'update
170 des blocs conditionnels par appel de la methode update_condition_bloc
173 #print "deep_update_condition_bloc",self
174 for mcfact in self.data :
175 mcfact.deep_update_condition_bloc()
177 def verif_condition_bloc(self):
179 Evalue les conditions de tous les blocs fils possibles
180 (en fonction du catalogue donc de la définition) de self et
181 retourne deux listes :
182 - la première contient les noms des blocs à rajouter
183 - la seconde contient les noms des blocs à supprimer
185 # Sans objet pour une liste de mots clés facteurs (a voir !!!)
188 def init_modif(self):
190 Met l'état de l'objet à modified et propage au parent
191 qui vaut None s'il n'existe pas
193 self.state = 'modified'
195 self.parent.init_modif()
199 Méthode appelée après qu'une modification a été faite afin de déclencher
200 d'éventuels traitements post-modification
202 #print "fin_modif",self
203 CONNECTOR.Emit(self,"valid")
205 self.parent.fin_modif()
207 def get_genealogie(self):
209 Retourne la liste des noms des ascendants.
210 Un objet MCList n'est pas enregistré dans la genealogie.
211 XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
214 return self.parent.get_genealogie()
218 def get_liste_mc_ordonnee_brute(self,liste,dico):
220 Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
221 d'une entité composée dont le chemin complet est donné sous forme
222 d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
225 objet_cata = dico[arg]
226 dico=objet_cata.entites
227 return objet_cata.ordre_mc
229 def verif_existence_sd(self):
231 Vérifie que les structures de données utilisées dans self existent bien dans le contexte
232 avant étape, sinon enlève la référence à ces concepts
234 for motcle in self.data :
235 motcle.verif_existence_sd()
239 Retourne la chaine d'aide contenue dans le catalogue
240 en tenant compte de la langue
243 return self.data[0].get_fr()