Salome HOME
correction pb condition_context avec newJDC
[tools/eficas.git] / Extensions / commentaire.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 """
22    Ce module contient la classe COMMENTAIRE qui sert dans EFICAS
23    pour gérer les commentaires dans un JDC
24 """
25
26 from Noyau.N_CR import CR
27
28 class COMMENTAIRE :
29   """ 
30       Cette classe permet de créer des objets de type COMMENTAIRE 
31   """
32   nature = 'COMMENTAIRE'
33   idracine = '_comm'
34
35   def __init__(self,valeur,parent=None):
36     # parent est un objet de type OBJECT (ETAPE ou MC ou JDC...)
37     self.valeur=valeur
38     if not parent :
39       self.jdc = self.parent = CONTEXT.get_current_step()
40     else:
41       self.jdc = self.parent = parent
42     # La classe COMMENTAIRE n'a pas de définition. On utilise self
43     # pour complétude
44     self.definition=self
45     self.nom=''
46     self.niveau = self.parent.niveau
47     self.actif=1
48     self.state="unchanged"
49     self.register()
50
51   def register(self):
52     """ 
53         Enregistre le commentaire dans la liste des étapes de son parent
54         lorsque celui-ci est un JDC 
55     """
56     if self.parent.nature == 'JDC':
57       # le commentaire est entre deux commandes:
58       # il faut l'enregistrer dans la liste des étapes
59       self.parent.register(self)
60
61   def isvalid(self):
62     """
63     Retourne 1 si self est valide, 0 sinon
64     Retourne toujours 1 car un commentaire est toujours valide
65     """
66     return 1
67
68   def isoblig(self):
69     """ Indique si self est obligatoire ou non : retourne toujours 0 """
70     return 0
71
72   def isrepetable(self):
73     """ Indique si self est répétable ou non : retourne toujours 1 """
74     return 1
75
76   def active(self):
77       """
78       Rend l'etape courante active
79       """
80       self.actif = 1
81
82   def inactive(self):
83       """
84       Rend l'etape courante inactive
85       NB : un commentaire est toujours actif !
86       """
87       self.actif = 1
88
89   def isactif(self):
90       """
91       Booléenne qui retourne 1 si self est valide, 0 sinon
92       """
93       return self.actif
94
95   def supprime(self):
96       """
97       Méthode qui supprime toutes les boucles de références afin que 
98       l'objet puisse être correctement détruit par le garbage collector
99       """
100       self.parent=None
101       self.jdc=None
102       self.definition = None
103       self.niveau = None
104
105   def liste_mc_presents(self):
106       return []
107
108   def get_valeur(self) :
109     """ Retourne la valeur de self, cad le contenu du commentaire """
110     try :
111       return self.valeur
112     except:
113       return None
114
115   def set_valeur(self,new_valeur):
116     """ 
117         Remplace la valeur de self(si elle existe) par new_valeur
118     """
119     self.valeur = new_valeur
120     self.init_modif()
121
122   def init_modif(self):
123     self.state = 'modified'
124     if self.parent:
125       self.parent.init_modif()
126
127   def supprime_sdprods(self):
128     pass
129
130   def update_context(self,d):
131     """
132         Update le dictionnaire d avec les concepts ou objets produits par self
133         --> ne fait rien pour un commentaire
134     """
135     pass
136
137   def report(self):
138     """ Génère l'objet rapport (classe CR) """
139     self.cr=CR()
140     if not self.isvalid(): self.cr.warn("Objet commentaire non valorisé")
141     return self.cr
142
143   def ident(self):
144     """ Retourne le nom interne associé à self
145         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
146     """
147     return self.nom
148
149   def delete_concept(self,sd):
150     pass
151
152   def replace_concept (self,old_sd,sd):
153     pass
154
155   def verif_condition_bloc(self):
156     """
157         Evalue les conditions de tous les blocs fils possibles
158         (en fonction du catalogue donc de la définition) de self et
159         retourne deux listes :
160           - la première contient les noms des blocs à rajouter
161           - la seconde contient les noms des blocs à supprimer
162     """
163     return [],[]
164
165   def verif_condition_regles(self,liste_presents):
166     """
167         Retourne la liste des mots-clés à rajouter pour satisfaire les règles
168         en fonction de la liste des mots-clés présents
169     """
170     return []
171
172   def get_sdprods(self,nom_sd):
173      """
174          Retourne les concepts produits par la commande
175      """
176      return None
177
178   def verif_existence_sd(self):
179      pass
180
181   def get_fr(self):
182     """
183     Retourne le commentaire lui meme tronque a la 1ere ligne
184     """
185     return self.valeur.split('\n',1)[0]
186
187   def control_sdprods(self,d):
188       """sans objet """
189       pass
190