1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
26 from Noyau import N_MCCOMPO
27 from Validation import V_MCCOMPO
29 class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
35 def __init__(self,val,definition,nom,parent):
36 # val contient la valeur initial du nuplet
38 if val == None: self.val=()
39 self.definition=definition
42 # GETVAL affecte la valeur par defaut si necessaire
43 self.valeur=self.GETVAL(self.val)
45 self.jdc = self.parent.jdc
46 self.niveau = self.parent.niveau
47 self.etape = self.parent.etape
49 # Le mot cle a été créé sans parent
53 self.state = 'undetermined'
55 self.mc_liste=self.build_mc()
59 Construit la liste des sous-entites de MCNUPLET
60 à partir de la liste des arguments (valeur)
63 if args ==None : args =()
66 # on crée les sous entites du NUPLET a partir des valeurs initiales
68 for v in self.definition.entites:
73 objet=v(val=val,nom=`k`,parent=self)
74 if hasattr(objet.definition,'position'):
75 if objet.definition.position == 'global' :
76 self.append_mc_global(objet)
78 mc_liste.append(objet)
82 def isvalid(self,cr='non'):
84 Indique si self (MCNUPLET) est un objet valide ou non : retourne 1 si oui, 0 sinon
86 if self.state == 'unchanged' :
90 if hasattr(self,'valid'):
91 old_valid = self.valid
94 for child in self.mc_liste :
95 if not child.isvalid():
98 if len(self.mc_liste) != len(self.definition.entites):
101 self.cr.fatal(string.join(("Nuplet : ",self.nom," Longueur incorrecte")))
103 self.state = 'unchanged'
105 if old_valid != self.valid : self.init_modif_up()
108 def __getitem__(self,key):
110 Retourne le key ème élément du nuplet
112 # Un nuplet est toujours une liste de mots cles simples
113 # On retourne donc la valeur
114 return self.mc_liste[key].valeur
118 Retourne une représentation du nuplet sous forme de chaine
122 for e in self.mc_liste:
123 s=s + str(e.valeur) + ','
128 Retourne une représentation du nuplet sous forme de chaine
132 for e in self.mc_liste:
133 s=s + str(e.valeur) + ','
136 def get_regles(self):
138 Retourne la liste des règles attachées au nuplet
142 def verif_condition_bloc(self):
144 Vérifie s'il y a des blocs sous le nuplet et retourne
145 les blocs en question
147 # Il n y a pas de BLOCs sous un NUPLET
150 def isrepetable(self):
152 Indique si le NUPLET peut etre répété.
153 Retourne 1 si c'est le cas.
154 Retourne 0 dans le cas contraire.
155 L'information est donnée par le catalogue, cad la définition de self
157 if self.definition.min != self.definition.max :
163 return self.definition(val = None, nom = self.nom,parent = self.parent)
165 def get_valeur(self):
167 Cette méthode doit retourner la valeur de l'objet. Elle est utilisée par
168 cree_dict_valeurs pour construire un dictionnaire contenant les mots clés
170 Dans le cas d'un nuplet, on retournera comme valeur une liste des valeurs
171 des mots clé simples contenus.
174 for v in self.mc_liste:
180 Une autre méthode qui retourne une "autre" valeur du mot clé facteur.
181 Elle est utilisée par la méthode get_mocle
184 for v in self.mc_liste:
189 return self.definition.statut=='o'