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