Salome HOME
TypeInstance and basestring
[tools/eficas.git] / Validation / V_JDC.py
index b0536d6fa3b83b982158f66fffae5ccc93adf90f..8cc88484d57ec6c082e41bd94a19032c6097c1f2 100644 (file)
-#@ MODIF V_JDC Validation  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# coding=utf-8
+# person_in_charge: mathieu.courtois at edf.fr
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2017  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-#                                                                       
-#                                                                       
 # ======================================================================
 
 
 """
-   Ce module contient la classe mixin JDC qui porte les méthodes
-   nécessaires pour réaliser la validation d'un objet de type JDC
-   dérivé de OBJECT.
+   Ce module contient la classe mixin JDC qui porte les methodes
+   necessaires pour realiser la validation d'un objet de type JDC
+   derive de OBJECT.
 
    Une classe mixin porte principalement des traitements et est
-   utilisée par héritage multiple pour composer les traitements.
+   utilisee par heritage multiple pour composer les traitements.
 """
-# Modules Python
-import string,types
-
+from __future__ import absolute_import
 # Modules EFICAS
-import V_MCCOMPO
+from . import V_MCCOMPO
 from Noyau.N_Exception import AsException
 from Noyau.N_utils import AsType
 
-class JDC(V_MCCOMPO.MCCOMPO):
-   """
-   """
 
-   def report(self):
-      """ 
-          Methode pour generation d un rapport de validite
-      """
-      self.cr.purge()
-      self.cr.debut="DEBUT CR validation : "+self.nom
-      self.cr.fin="FIN CR validation :"+self.nom
-      for e in self.etapes :
-        if e.isactif():
-          self.cr.add(e.report())
-      self.state = 'modified'
-      self.isvalid(cr='oui')
-      return self.cr
+class JDC(V_MCCOMPO.MCCOMPO):
 
-   def isvalid(self,cr='non'):
-      """
-        Méthode booléenne qui retourne 0 si le JDC est invalide, 1 sinon
-      """
-      # FR : on prend en compte l'état du JDC ('unchanged','modified','undetermined')
-      # afin d'accélérer le test de validité du JDC 
-      if self.state == 'unchanged':
-        return self.valid
-      else:
-        valid = 1
-        texte,test = self.verif_regles()
-        if test == 0:
-          if cr == 'oui': self.cr.fatal(string.strip(texte))
-          valid = 0
-        if valid :
-          for e in self.etapes:
-            if not e.isactif() : continue
-            if not e.isvalid():
-              valid = 0
-              break
-        self.state="unchanged"
-        self.valid = valid
-        return self.valid
+    """
+    """
 
-   def verif_regles(self):
-      """ 
-         Effectue la vérification de validité des règles du jeu de commandes 
-      """
-      l_noms_etapes=self.get_l_noms_etapes()
-      texte_global = ''
-      test_global = 1
-      for regle in self.regles :
-        texte,test = regle.verif(l_noms_etapes)
-        texte_global = texte_global + texte
-        test_global = test_global*test
-      return texte_global,test_global
+    def report(self):
+        """
+            Methode pour generation d un rapport de validite
+        """
+        self.cr.purge()
+        #self.cr.debut = "DEBUT CR validation : " + self.nom
+        #self.cr.fin = "FIN CR validation :" + self.nom
+        self.cr.debut = "BEGIN validation report : " + self.nom
+        self.cr.fin = "END validation report :" + self.nom
+        for e in self.etapes:
+            if e.isActif():
+                self.cr.add(e.report())
+        self.state = 'modified'
+        self.isValid(cr='oui')
+        return self.cr
 
-   def get_l_noms_etapes(self):
-      """ 
-          Retourne la liste des noms des étapes de self 
-      """
-      l=[]
-      for etape in self.etapes:
-        l.append(etape.nom)
-      return l
+    def isValid(self, cr='non'):
+        """
+          Methode booleenne qui retourne 0 si le JDC est invalide, 1 sinon
+        """
+        # FR : on prend en compte l'etat du JDC ('unchanged','modified','undetermined')
+        # afin d'accelerer le test de validite du JDC
+        if self.state == 'unchanged':
+            return self.valid
+        else:
+            valid = 1
+            texte, test = self.verifRegles()
+            if test == 0:
+                if cr == 'oui':
+                    if texte != "" and (' '.strip(texte) == "") : self.cr.fatal(texte)
+                    else : self.cr.fatal(' '.strip(texte))
+                valid = 0
+            if valid:
+                for e in self.etapes:
+                    if not e.isActif():
+                        continue
+                    if not e.isValid():
+                        valid = 0
+                        break
+            self.state = "unchanged"
+            self.valid = valid
+            return self.valid
 
+    def verifRegles(self):
+        """
+        Effectue la verification de validite des regles du jeu de commandes
+        """
+        noms_etapes = [etape.nom for etape in self.etapes]
+        texte_global = ''
+        test_global = 1
+        for regle in self.regles:
+            texte, test = regle.verif(noms_etapes)
+            texte_global = texte_global + texte
+            test_global = test_global * test
+        return texte_global, test_global