Salome HOME
Modif V6_4_°
[tools/eficas.git] / Validation / V_AU_PLUS_UN.py
1 #@ MODIF V_AU_PLUS_UN Validation  DATE 09/11/2010   AUTEUR COURTOIS M.COURTOIS 
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE COURTOIS M.COURTOIS
4 #            CONFIGURATION MANAGEMENT OF EDF VERSION
5 # ======================================================================
6 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
7 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
8 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
9 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
10 # (AT YOUR OPTION) ANY LATER VERSION.                                                  
11 #                                                                       
12 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
13 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
14 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
15 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
16 #                                                                       
17 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
18 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
19 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
20 # ======================================================================
21
22
23 class AU_PLUS_UN:
24    """
25       La règle vérifie que l'on trouve 1 (au plus) des mots-clés
26       de la règle parmi les arguments d'un OBJECT.
27
28       Ces arguments sont transmis à la règle pour validation sous la forme
29       d'une liste de noms de mots-clés ou d'un dictionnaire dont
30       les clés sont des noms de mots-clés.
31    """
32    def verif(self, args):
33       """
34           La méthode verif vérifie que l'on trouve 1 (au plus) 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       count = 0
43       args = self.liste_to_dico(args)
44       for mc in self.mcs:
45          count = count + args.get(mc, 0)
46       if count > 1:
47          text = "- Il ne faut qu'un mot-clé (au plus) parmi : "+`self.mcs`+'\n'
48          return text, 0
49       return text, 1
50
51    def liste_to_dico(self, args) :
52       if type(args) is dict:
53          return args
54       elif type(args) in (list, tuple):
55          dico={}
56          for arg in args:
57             dico[arg] = dico.get(arg, 0) + 1
58          return dico
59       else :
60          raise "Erreur ce n'est ni un dictionnaire ni une liste", args