Salome HOME
1er mise en coherence avec la 7_6
[tools/eficas.git] / Validation / V_MEME_NOMBRE.py
1 # coding=utf-8
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2015  EDF R&D                  WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
8 #
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 #
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
17 # ======================================================================
18 # person_in_charge: mathieu.courtois at edf.fr
19
20
21 class MEME_NOMBRE:
22
23     """
24        La règle MEME_NOMBRE vérifie que l'on trouve au moins un des mots-clés
25        de la règle parmi les arguments d'un OBJECT.
26
27        Ces arguments sont transmis à la règle pour validation sous la forme
28        d'une liste de noms de mots-clés ou d'un dictionnaire dont
29        les clés sont des noms de mots-clés.
30     """
31
32     def verif(self, args):
33         """
34             La méthode verif vérifie que l'on trouve au moins un des mos-clés
35             de la liste self.mcs parmi les éléments de args
36
37             args peut etre un dictionnaire ou une liste. Les éléments de args
38             sont soit les éléments de la liste soit les clés du dictionnaire.
39         """
40         #  on compte le nombre de mots cles presents
41         text = ''
42         args = self.liste_to_dico(args)
43         size = -1
44
45         for mc in self.mcs:
46             if mc not in args.keys():
47                 text = u"Une clé dans la règle n'existe pas %s" % mc
48                 return text, 0
49
50             val = args[mc].valeur
51             len_val = 0
52             if not isinstance(val, type([])):
53                 len_val = 1
54             else:
55                 len_val = len(val)
56
57             if size == -1:
58                 size = len_val
59             elif size != len_val:
60                 text = u"Pas la même longeur"
61                 return text, 0
62         return text, 1