Salome HOME
merge de la branche BR_dev_mars_06 (tag V1_10b5) dans la branche principale
[tools/eficas.git] / Noyau / N_FACT.py
index 2d9455c03c2c14815add7e5daabf5d2ecfcf5107..e5e3b4280ce21ec21f4583d0a005a301cfc2f610 100644 (file)
@@ -1,4 +1,5 @@
-#@ MODIF N_FACT Noyau  DATE 27/03/2002   AUTEUR DURAND C.DURAND 
+#@ MODIF N_FACT Noyau  DATE 16/05/2006   AUTEUR DURAND C.DURAND 
+# -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18,6 +19,8 @@
 #                                                                       
 #                                                                       
 # ======================================================================
 #                                                                       
 #                                                                       
 # ======================================================================
+
+
 """ Ce module contient la classe de definition FACT
     qui permet de spécifier les caractéristiques des mots clés facteurs
 """
 """ Ce module contient la classe de definition FACT
     qui permet de spécifier les caractéristiques des mots clés facteurs
 """
@@ -27,6 +30,9 @@ import types
 import N_ENTITE
 import N_MCFACT
 import N_MCLIST
 import N_ENTITE
 import N_MCFACT
 import N_MCLIST
+from N__F import _F
+
+import N_OBJECT 
 
 class FACT(N_ENTITE.ENTITE):
    """
 
 class FACT(N_ENTITE.ENTITE):
    """
@@ -47,7 +53,7 @@ class FACT(N_ENTITE.ENTITE):
    label = 'FACT'
 
    def __init__(self,fr="",ang="",docu="",regles=(),statut='f',defaut=None,
    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 :
      
       """
           Un mot-clé facteur est caractérisé par les attributs suivants :
@@ -70,6 +76,7 @@ class FACT(N_ENTITE.ENTITE):
 
           - docu
       """
 
           - docu
       """
+      N_ENTITE.ENTITE.__init__(self,validators)
       # Initialisation des attributs
       self.fr=fr
       self.ang=ang
       # Initialisation des attributs
       self.fr=fr
       self.ang=ang
@@ -111,24 +118,30 @@ class FACT(N_ENTITE.ENTITE):
         elif type(self.defaut) == types.TupleType:
           val=self.defaut
               # Est ce utile ? Le défaut pourrait etre uniquement un dict
         elif type(self.defaut) == types.TupleType:
           val=self.defaut
               # Est ce utile ? Le défaut pourrait etre uniquement un dict
-        elif type(self.defaut) == types.DictType or isinstance(self.defaut,N_MCFACT._F):
+        elif type(self.defaut) == types.DictType or isinstance(self.defaut,_F):
           val=self.defaut
         else:
           # On ne devrait jamais passer par la
           print "On ne devrait jamais passer par la"
           return None
 
           val=self.defaut
         else:
           # On ne devrait jamais passer par la
           print "On ne devrait jamais passer par la"
           return None
 
-      if type(val) == types.TupleType or type(val) == types.ListType :
-        # on est en présence d'un MCFACT multiple !
-        l=self.list_instance()
-        l.init(nom = nom,parent=parent)
-        for v in val:
-          objet=self.class_instance(nom=nom,definition=self,val=v,parent=parent)
-          l.append(objet)
-        return l
+      # On cree toujours une liste de mcfact
+      l=self.list_instance()
+      l.init(nom = nom,parent=parent)
+      if type(val) in (types.TupleType,types.ListType) :
+         for v in val:
+            if type(v) == types.DictType or isinstance(v, _F):
+               objet=self.class_instance(nom=nom,definition=self,val=v,parent=parent)
+               l.append(objet)
+            else:
+               l.append(N_OBJECT.ErrorObj(self,v,parent,nom))
+      elif type(val) == types.DictType or isinstance(val, _F):
+         objet=self.class_instance(nom=nom,definition=self,val=val,parent=parent)
+         l.append(objet)
       else:
       else:
-        return self.class_instance(nom=nom,definition=self,val=val,parent=parent)
+         l.append(N_OBJECT.ErrorObj(self,val,parent,nom))
 
 
+      return l
 
    def verif_cata(self):
       if type(self.min) != types.IntType :
 
    def verif_cata(self):
       if type(self.min) != types.IntType :
@@ -147,5 +160,7 @@ class FACT(N_ENTITE.ENTITE):
          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`)
          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()
 
       self.verif_cata_regles()