]> SALOME platform Git repositories - tools/eficas.git/blob - Extensions/commande_comm.py
Salome HOME
CCAR: Modified Files:
[tools/eficas.git] / Extensions / commande_comm.py
1 #@ MODIF commande_comm Accas  DATE 02/07/2001   AUTEUR D6BHHJP J.P.LEFEBVRE 
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
5 #              SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND
6 #              REDISTRIBUTION OF THIS FILE.
7 # ======================================================================
8 import os,traceback,string
9
10 from Noyau.N_CR import CR
11 from Noyau.N_Exception import AsException
12
13 class COMMANDE_COMM:
14     """
15     Cette classe sert à définir les objets de type Commande commentarisée
16     """
17     nature = "COMMANDE_COMMENTARISEE"
18     idracine='_comm'
19     
20     def __init__(self,texte='',parent=None,reg='oui'):
21         self.valeur = texte
22         if not parent :
23             self.jdc = self.parent = CONTEXT.get_current_step()
24         else:
25             self.jdc = self.parent = parent
26         if hasattr(self.parent,'etape'):
27           self.etape = self.parent.etape
28         else :
29           self.etape = None
30         self.definition=self
31         self.nom = ''
32         self.niveau = self.parent.niveau
33         self.actif=1
34         #self.appel = N_utils.callee_where(niveau=2)
35         if reg=='oui' : self.register()
36             
37     def isvalid(self):
38         return 1
39
40     def report(self):
41         """
42         Génère l'objet rapport (classe CR)
43         """
44         self.cr=CR()
45         if not self.isvalid(): self.cr.warn("Objet commande commentarisé invalide")
46         return self.cr
47
48     def copy(self):
49         """
50         Retourne une copie de self cad un objet COMMANDE_COMM
51         """
52         # XXX self.texte ne semble pas exister ???
53         return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
54
55     def init_modif(self):
56         self.state = 'modified'
57         self.parent.init_modif()    
58
59     def set_valeur(self,new_valeur):
60         """
61         Remplace la valeur de self(si elle existe) par new_valeur)
62         """
63         self.valeur = new_valeur
64         self.init_modif()
65
66     def get_valeur(self) :
67         """
68         Retourne la valeur de self, cad le texte de la commande commentarisée
69         """
70         return self.valeur
71
72     def register(self):
73         """
74         Enregistre la commande commenatrisée dans la liste des étapes de son parent lorsque celui-ci
75         est un JDC
76         """
77         self.parent.register(self)
78
79     def isoblig(self):
80         """
81         Indique si self est obligatoire ou non : retourne toujours 0
82         """
83         return 0
84
85     def ident(self):
86         """
87         Retourne le nom interne associé à self
88         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
89         """
90         return self.nom
91
92     def isrepetable(self):
93         """
94         Indique si self est répétable ou non : retourne toujours 1
95         """
96         return 1        
97
98     def get_attribut(self,nom_attribut) :
99         """
100         Retourne l'attribut de nom nom_attribut de self (ou hérité)
101         """
102         if hasattr(self,nom_attribut) :
103           return getattr(self,nom_attribut)
104         else :
105           return None
106
107     def get_fr(self):
108         """
109         Retourne l'attribut fr de self.definition
110         """
111         try :
112           return getattr(self.definition,'fr')
113         except:
114           return ''
115
116     def liste_mc_presents(self):
117         return []
118
119     def supprime(self):
120         """ 
121         Méthode qui supprime toutes les boucles de références afin que l'objet puisse
122         être correctement détruit par le garbage collector 
123         """
124         self.parent = None
125         self.etape = None
126         self.jdc = None
127         self.niveau = None
128         self.definition = None
129         self.valeur = None
130         self.val = None
131         self.appel = None
132
133     def supprime_sdprods(self):
134         pass
135
136     def update_context(self,d):
137         """
138         Update le dictionnaire d avec les concepts ou objets produits par self
139         --> ne fait rien pour une commande en  commentaire
140         """
141         pass
142
143     def delete_concept(self,sd):
144         pass
145
146     def get_sdprods(self,nom_sd):
147         return None
148
149     def uncomment(self):
150         """
151         Cette méthode a pour but de décommentariser l'objet courant,
152         cad de retourner un tuple contenant :
153         - l'objet CMD associé
154         - le nom de la sdprod éventuellement produite (sinon None)
155         """
156         # on récupère le contexte avant la commande commentarisée
157         context_ini = self.jdc.get_contexte_avant(self)
158         try:
159             # on essaie de créer un objet JDC...
160             CONTEXT.unset_current_step()
161             J=self.jdc.__class__(procedure=self.valeur,
162                                  definition=self.jdc.definition,
163                                  cata=self.jdc.cata,
164                                  cata_ord_dico=self.jdc.cata_ordonne_dico,
165                                  context_ini = context_ini,
166                                 )
167             J.analyse()
168         except Exception,e:
169             traceback.print_exc()
170             #self.jdc.set_context()
171             raise AsException("Erreur",str(e))
172         if len(J.cr.crfatal)>0 :
173             # des erreurs fatales ont été rencontrées
174             #self.jdc.set_context()
175             print 'erreurs fatales !!!'
176             raise AsException("Erreurs fatales",string.join(J.cr.crfatal))
177         #self.jdc.set_context()
178         new_etape = J.etapes[0]
179         if new_etape.sd :
180             nom_sd = new_etape.sd.nom
181         else:
182             nom_sd = None
183         return (new_etape.copy(),nom_sd)
184
185     def active(self):
186         """
187         Rend l'etape courante active
188         """
189         self.actif = 1
190
191     def inactive(self):
192         """
193         Rend l'etape courante inactive
194         """
195         self.actif = 0
196
197     def isactif(self):
198         """
199         Booléenne qui retourne 1 si self est valide, 0 sinon
200         """
201         return self.actif
202     
203     def verif_condition_bloc(self):
204       """
205           Evalue les conditions de tous les blocs fils possibles
206           (en fonction du catalogue donc de la définition) de self et
207           retourne deux listes :
208           - la première contient les noms des blocs à rajouter
209           - la seconde contient les noms des blocs à supprimer
210       """
211       return [],[]
212
213     def verif_condition_regles(self,liste_presents):
214       """
215           Retourne la liste des mots-clés à rajouter pour satisfaire les règles
216           en fonction de la liste des mots-clés présents
217       """
218       return []
219