Salome HOME
.gitignore: test hook.
[tools/eficas.git] / Validation / V_MCBLOC.py
1 # coding=utf-8
2 # person_in_charge: mathieu.courtois at edf.fr
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2017  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 MCBLOC qui porte les methodes
25    necessaires pour realiser la validation d'un objet de type MCBLOC
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 MCBLOC(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 = u"Bloc :"
45
46     def isValid(self, sd='oui', cr='non'):
47         """
48            Methode pour verifier la validite du MCBLOC. 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.mcListe:
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.verifRegles()
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             self.valid = valid
75             self.state = 'unchanged'
76             if not old_valid or old_valid != self.valid:
77                 self.initModifUp()
78             return self.valid