Salome HOME
*** empty log message ***
[tools/eficas.git] / Extensions / commande_comm.py
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.
9 #
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.
14 #
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.
18 #
19 #
20 # ======================================================================
21 import os,traceback,string
22
23 from Noyau.N_CR import CR
24 from Noyau.N_Exception import AsException
25
26 class COMMANDE_COMM:
27     """
28     Cette classe sert à définir les objets de type Commande commentarisée
29     """
30     nature = "COMMANDE_COMMENTARISEE"
31     idracine='_comm'
32     
33     def __init__(self,texte='',parent=None,reg='oui'):
34         self.valeur = texte
35         if not parent :
36             self.jdc = self.parent = CONTEXT.get_current_step()
37         else:
38             self.jdc = self.parent = parent
39         if hasattr(self.parent,'etape'):
40           self.etape = self.parent.etape
41         else :
42           self.etape = None
43         self.definition=self
44         self.nom = ''
45         self.niveau = self.parent.niveau
46         self.actif=1
47         self.state="unchanged"
48         #self.appel = N_utils.callee_where(niveau=2)
49         if reg=='oui' : self.register()
50             
51     def isvalid(self):
52         return 1
53
54     def report(self):
55         """
56         Génère l'objet rapport (classe CR)
57         """
58         self.cr=CR()
59         if not self.isvalid(): self.cr.warn("Objet commande commentarisé invalide")
60         return self.cr
61
62     def copy(self):
63         """
64         Retourne une copie de self cad un objet COMMANDE_COMM
65         """
66         # XXX self.texte ne semble pas exister ???
67         return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
68
69     def init_modif(self):
70         self.state = 'modified'
71         self.parent.init_modif()    
72
73     def set_valeur(self,new_valeur):
74         """
75         Remplace la valeur de self(si elle existe) par new_valeur)
76         """
77         self.valeur = new_valeur
78         self.init_modif()
79
80     def get_valeur(self) :
81         """
82         Retourne la valeur de self, cad le texte de la commande commentarisée
83         """
84         return self.valeur
85
86     def register(self):
87         """
88         Enregistre la commande commenatrisée dans la liste des étapes de son parent lorsque celui-ci
89         est un JDC
90         """
91         self.parent.register(self)
92
93     def isoblig(self):
94         """
95         Indique si self est obligatoire ou non : retourne toujours 0
96         """
97         return 0
98
99     def ident(self):
100         """
101         Retourne le nom interne associé à self
102         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
103         """
104         return self.nom
105
106     def isrepetable(self):
107         """
108         Indique si self est répétable ou non : retourne toujours 1
109         """
110         return 1        
111
112     def get_attribut(self,nom_attribut) :
113         """
114         Retourne l'attribut de nom nom_attribut de self (ou hérité)
115         """
116         if hasattr(self,nom_attribut) :
117           return getattr(self,nom_attribut)
118         else :
119           return None
120
121     def get_fr(self):
122         """
123         Retourne l'attribut fr de self.definition
124         """
125         try :
126           return getattr(self.definition,'fr')
127         except:
128           return ''
129
130     def liste_mc_presents(self):
131         return []
132
133     def supprime(self):
134         """ 
135         Méthode qui supprime toutes les boucles de références afin que l'objet puisse
136         être correctement détruit par le garbage collector 
137         """
138         self.parent = None
139         self.etape = None
140         self.jdc = None
141         self.niveau = None
142         self.definition = None
143         self.valeur = None
144         self.val = None
145         self.appel = None
146
147     def supprime_sdprods(self):
148         pass
149
150     def update_context(self,d):
151         """
152         Update le dictionnaire d avec les concepts ou objets produits par self
153         --> ne fait rien pour une commande en  commentaire
154         """
155         pass
156
157     def delete_concept(self,sd):
158         pass
159
160     def replace_concept (self,old_sd,sd):
161         pass
162
163     def get_sdprods(self,nom_sd):
164         return None
165
166     def uncomment(self):
167         """
168         Cette méthode a pour but de décommentariser l'objet courant,
169         cad de retourner un tuple contenant :
170           - l'objet CMD associé
171           - le nom de la sdprod éventuellement produite (sinon None)
172         """
173         # on récupère le contexte avant la commande commentarisée
174         context_ini = self.jdc.get_contexte_avant(self)
175         try:
176             # on essaie de créer un objet JDC...
177             CONTEXT.unset_current_step()
178             J=self.jdc.__class__(procedure=self.valeur,
179                                  definition=self.jdc.definition,
180                                  cata=self.jdc.cata,
181                                  cata_ord_dico=self.jdc.cata_ordonne_dico,
182                                  context_ini = context_ini,
183                                 )
184             J.analyse()
185         except Exception,e:
186             traceback.print_exc()
187             #self.jdc.set_context()
188             raise AsException("Erreur",str(e))
189         if len(J.cr.crfatal)>0 :
190             # des erreurs fatales ont été rencontrées
191             #self.jdc.set_context()
192             print 'erreurs fatales !!!'
193             raise AsException("Erreurs fatales",string.join(J.cr.crfatal))
194         #self.jdc.set_context()
195         new_etape = J.etapes[0]
196         if new_etape.sd :
197             nom_sd = new_etape.sd.nom
198         else:
199             nom_sd = None
200         return (new_etape.copy(),nom_sd)
201
202     def active(self):
203         """
204         Rend l'etape courante active
205         """
206         self.actif = 1
207
208     def inactive(self):
209         """
210         Rend l'etape courante inactive
211         """
212         self.actif = 0
213
214     def isactif(self):
215         """
216         Booléenne qui retourne 1 si self est valide, 0 sinon
217         """
218         return self.actif
219     
220     def verif_condition_bloc(self):
221       """
222           Evalue les conditions de tous les blocs fils possibles
223           (en fonction du catalogue donc de la définition) de self et
224           retourne deux listes :
225             - la première contient les noms des blocs à rajouter
226             - la seconde contient les noms des blocs à supprimer
227       """
228       return [],[]
229
230     def verif_condition_regles(self,liste_presents):
231       """
232           Retourne la liste des mots-clés à rajouter pour satisfaire les règles
233           en fonction de la liste des mots-clés présents
234       """
235       return []
236
237     def reparent(self,parent):
238       """
239           Cette methode sert a reinitialiser la parente de l'objet
240       """
241       self.parent=parent
242       self.jdc=parent.get_jdc_root()
243       self.etape=self
244
245     def verif_existence_sd(self):
246       """
247          Vérifie que les structures de données utilisées dans self existent bien dans le contexte
248          avant étape, sinon enlève la référence à ces concepts
249          --> sans objet pour les commandes commentarisées
250       """
251       pass
252         
253     def control_sdprods(self,d):
254       """sans objet pour les commandes commentarisées"""
255       pass