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