Salome HOME
legere difference ds VARIABLES_TO_BE...
[tools/eficas.git] / Validation / V_MCFACT.py
1 # coding=utf-8
2 # person_in_charge: mathieu.courtois at edf.fr
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2015  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21
22
23 """
24    Ce module contient la classe mixin MCFACT qui porte les methodes
25    necessaires pour realiser la validation d'un objet de type MCFACT
26    derive de OBJECT.
27
28    Une classe mixin porte principalement des traitements et est
29    utilisee par heritage multiple pour composer les traitements.
30 """
31 from __future__ import absolute_import
32 # Modules EFICAS
33 from . import V_MCCOMPO
34
35
36 class MCFACT(V_MCCOMPO.MCCOMPO):
37
38     """
39        Cette classe a un attribut de classe :
40
41        - txt_nat qui sert pour les comptes-rendus lies a cette classe
42     """
43
44     txt_nat = "Mot cle Facteur :"
45
46     def isvalid(self, sd='oui', cr='non'):
47         """
48            Methode pour verifier la validite du MCFACT. Cette methode
49            peut etre appelee selon plusieurs modes en fonction de la valeur
50            de sd et de cr.
51
52            Si cr vaut oui elle cree en plus un compte-rendu
53            sd est present pour compatibilite de l'interface mais ne sert pas
54         """
55         if self.state == 'unchanged':
56             return self.valid
57         else:
58             valid = 1
59             if hasattr(self, 'valid'):
60                 old_valid = self.valid
61             else:
62                 old_valid = None
63             for child in self.mc_liste:
64                 if not child.isvalid():
65                     valid = 0
66                     break
67             # Apres avoir verifie la validite de tous les sous-objets, on verifie
68             # la validite des regles
69             text_erreurs, test_regles = self.verif_regles()
70             if not test_regles:
71                 if cr == 'oui':
72                     self.cr.fatal("Regle(s) non respectee(s) : %s" % text_erreurs)
73                 valid = 0
74             #
75             # On verifie les validateurs s'il y en a
76             #
77             if self.definition.validators and not self.definition.validators.verif(self.valeur):
78                 if cr == 'oui':
79                     self.cr.fatal("Keyword : %s should have %s" %( self.nom, self.definition.validators.info()))
80                 valid = 0
81             # fin des validateurs
82             #
83             if self.reste_val != {}:
84                 if cr == 'oui':
85                     self.cr.fatal("unknow keyword : %s" % ','.join(list(self.reste_val.keys())))
86                 valid = 0
87             self.valid = valid
88             self.state = 'unchanged'
89             if not old_valid or old_valid != self.valid:
90                 self.init_modif_up()
91             return self.valid