7 from Noyau import N_MCCOMPO
8 from Validation import V_MCCOMPO
10 class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
16 def __init__(self,val,definition,nom,parent):
17 # val contient la valeur initial du nuplet
19 if val == None: self.val=()
20 self.definition=definition
23 # GETVAL affecte la valeur par defaut si necessaire
24 self.valeur=self.GETVAL(self.val)
26 self.jdc = self.parent.jdc
27 self.niveau = self.parent.niveau
28 self.etape = self.parent.etape
30 # Le mot cle a été créé sans parent
34 self.state = 'undetermined'
35 self.mc_liste=self.build_mc()
39 Construit la liste des sous-entites de MCNUPLET
40 à partir de la liste des arguments (valeur)
43 if args ==None : args =()
46 # on crée les sous entites du NUPLET a partir des valeurs initiales
48 for v in self.definition.entites:
53 objet=v(val=val,nom=`k`,parent=self)
54 if hasattr(objet.definition,'position'):
55 if objet.definition.position == 'global' :
56 self.append_mc_global(objet)
58 mc_liste.append(objet)
62 def isvalid(self,cr='non'):
64 Indique si self (MCNUPLET) est un objet valide ou non : retourne 1 si oui, 0 sinon
66 if self.state == 'unchanged' :
70 if hasattr(self,'valid'):
71 old_valid = self.valid
74 for child in self.mc_liste :
75 if not child.isvalid():
78 if len(self.mc_liste) != len(self.definition.entites):
81 self.cr.fatal(string.join(("Nuplet : ",self.nom," Longueur incorrecte")))
83 self.state = 'unchanged'
85 if old_valid != self.valid : self.init_modif_up()
88 def __getitem__(self,key):
90 Retourne le key ème élément du nuplet
92 # Un nuplet est toujours une liste de mots cles simples
93 # On retourne donc la valeur
94 return self.mc_liste[key].valeur
98 Retourne une représentation du nuplet sous forme de chaine
102 for e in self.mc_liste:
103 s=s + str(e.valeur) + ','
108 Retourne une représentation du nuplet sous forme de chaine
112 for e in self.mc_liste:
113 s=s + str(e.valeur) + ','
116 def get_regles(self):
118 Retourne la liste des règles attachées au nuplet
122 def verif_condition_bloc(self):
124 Vérifie s'il y a des blocs sous le nuplet et retourne
125 les blocs en question
127 # Il n y a pas de BLOCs sous un NUPLET
130 def isrepetable(self):
132 Indique si le NUPLET peut etre répété.
133 Retourne 1 si c'est le cas.
134 Retourne 0 dans le cas contraire.
135 L'information est donnée par le catalogue, cad la définition de self
137 if self.definition.min != self.definition.max :
143 return self.definition(val = None, nom = self.nom,parent = self.parent)
145 def get_valeur(self):
147 Cette méthode doit retourner la valeur de l'objet. Elle est utilisée par
148 cree_dict_valeurs pour construire un dictionnaire contenant les mots clés
150 Dans le cas d'un nuplet, on retournera comme valeur une liste des valeurs
151 des mots clé simples contenus.
154 for v in self.mc_liste:
160 Une autre méthode qui retourne une "autre" valeur du mot clé facteur.
161 Elle est utilisée par la méthode get_mocle
164 for v in self.mc_liste:
169 return self.definition.statut=='o'