branch.
-#@ MODIF N_ENTITE Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+#@ MODIF N_ENTITE Noyau DATE 09/09/2003 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
"""
import N_CR
+import N_VALIDATOR
class ENTITE:
"""
Elle ne peut etre instanciee et doit d abord etre specialisee
"""
CR=N_CR.CR
+ factories={'validator':N_VALIDATOR.validatorFactory}
- def __init__(self):
+ def __init__(self,validators=None):
"""
Initialise les deux attributs regles et entites d'une classe dérivée
à : pas de règles et pas de sous-entités.
"""
self.regles=()
self.entites={}
+ if validators:
+ self.validators=self.factories['validator'](validators)
+ else:
+ self.validators=validators
def affecter_parente(self):
"""
-#@ MODIF N_FACT Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+#@ MODIF N_FACT Noyau DATE 09/09/2003 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
label = 'FACT'
def __init__(self,fr="",ang="",docu="",regles=(),statut='f',defaut=None,
- min=0,max=1,**args):
+ min=0,max=1,validators=None,**args):
"""
Un mot-clé facteur est caractérisé par les attributs suivants :
- docu
"""
+ N_ENTITE.ENTITE.__init__(self,validators)
# Initialisation des attributs
self.fr=fr
self.ang=ang
self.cr.fatal("L'attribut 'statut' doit valoir 'o','f','c' ou 'd' : %s" %`self.statut`)
if type(self.docu) != types.StringType :
self.cr.fatal("L'attribut 'docu' doit etre une chaine de caractères : %s" %`self.docu`)
+ if self.validators and not self.validators.verif_cata():
+ self.cr.fatal("Un des validateurs est incorrect. Raison : "+self.validators.cata_info)
self.verif_cata_regles()
-#@ MODIF N_SIMP Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+#@ MODIF N_SIMP Noyau DATE 09/09/2003 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
def __init__(self,typ,fr="",ang="",statut='f',into=None,defaut=None,
min=1,max=1,homo=1,position ='local',
- val_min = '**',val_max='**',docu=""):
+ val_min = '**',val_max='**',docu="",validators=None):
"""
Un mot-clé simple est caractérisé par les attributs suivants :
- docu
"""
- N_ENTITE.ENTITE.__init__(self)
+ N_ENTITE.ENTITE.__init__(self,validators)
# Initialisation des attributs
if type(typ) == types.TupleType :
self.type=typ
self.cr.fatal("L'attribut 'into' doit etre un tuple : %s" %`self.into`)
if self.position not in ['local','global','global_jdc']:
self.cr.fatal("L'attribut 'position' doit valoir 'local','global' ou 'global_jdc' : %s" %`self.position`)
-
+ if self.validators and not self.validators.verif_cata():
+ self.cr.fatal("Un des validateurs est incorrect. Raison : "+self.validators.cata_info)
def __call__(self,val,nom,parent=None):
"""
if not e.isvalid():
valid = 0
break
+ self.state="unchanged"
self.valid = valid
return self.valid
valid = 0
self.valid = valid
self.state = 'unchanged'
- if old_valid:
- if old_valid != self.valid : self.init_modif_up()
+ if not old_valid or old_valid != self.valid :
+ self.init_modif_up()
return self.valid
-#@ MODIF V_MCFACT Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+#@ MODIF V_MCFACT Validation DATE 09/09/2003 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
if not test_regles :
if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs)))
valid = 0
+ #
+ # On verifie les validateurs s'il y en a
+ #
+ if self.definition.validators and not self.definition.validators.verif(self.valeur):
+ if cr == 'oui' :
+ self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info())))
+ valid=0
+ # fin des validateurs
+ #
if self.reste_val != {}:
if cr == 'oui' :
self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),','))
valid=0
self.valid = valid
self.state = 'unchanged'
- if old_valid:
- if old_valid != self.valid : self.init_modif_up()
+ if not old_valid or old_valid != self.valid :
+ self.init_modif_up()
return self.valid
if self.state == 'unchanged' :
return self.valid
else:
- valid = 1
- if hasattr(self,'valid'):
- old_valid = self.valid
- else:
- old_valid = None
- # on teste les enfants
- for child in self.mc_liste :
- if not child.isvalid():
- valid = 0
- break
- # on teste les règles de self
- text_erreurs,test_regles = self.verif_regles()
- if not test_regles :
- if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs)))
- valid = 0
+ valid=self.valid_child()
+
+ valid=valid * self.valid_regles(cr)
+
if self.reste_val != {}:
if cr == 'oui' :
self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),','))
valid=0
- self.valid = valid
- self.state = 'unchanged'
- if old_valid:
- if old_valid != self.valid : self.init_modif_up()
+
+ self.set_valid(valid)
+
return self.valid