Salome HOME
CCAR: Modification du message d'erreur dans isvalid en cas de
[tools/eficas.git] / Validation / V_MCLIST.py
1 """
2    Ce module contient la classe mixin MCList qui porte les méthodes
3    nécessaires pour réaliser la validation d'un objet de type MCList
4    dérivé de OBJECT.
5
6    Une classe mixin porte principalement des traitements et est
7    utilisée par héritage multiple pour composer les traitements.
8 """
9 # Modules Python
10 import string
11 import traceback
12
13 # Modules EFICAS
14 from Noyau import N_CR
15 from Noyau.N_Exception import AsException
16
17 class MCList:
18    """
19       Cette classe a deux attributs de classe :
20
21       - CR qui sert à construire l'objet compte-rendu
22
23       - txt_nat qui sert pour les comptes-rendus liés à cette classe
24    """
25
26    CR=N_CR.CR
27    txt_nat="Mot cle Facteur Multiple :"
28
29    def isvalid(self,cr='non'):
30       """ 
31          Methode pour verifier la validité du MCList. Cette méthode
32          peut etre appelée selon plusieurs modes en fonction de la valeur
33          de cr.
34
35          Si cr vaut oui elle crée en plus un compte-rendu.
36
37          On n'utilise pas d'attribut pour stocker l'état et on ne remonte pas 
38          le changement d'état au parent (pourquoi ??)
39       """
40       if len(self.data) == 0 : return 0
41       num = 0
42       test = 1
43       for i in self.data:
44         num = num+1
45         if not i.isvalid():
46           if cr=='oui':
47             self.cr.fatal(string.join(["L'occurrence n°",`num`," du mot-clé facteur :",self.nom," n'est pas valide"]))
48           test = 0
49       return test
50
51    def report(self):
52       """ 
53           Génère le rapport de validation de self 
54       """
55       self.cr=self.CR( debut = "Mot-clé facteur multiple : "+self.nom,
56                   fin = "Fin Mot-clé facteur multiple : "+self.nom)
57       # XXX j'ai mis l'état en commentaire car il n'est utilisé ensuite
58       #self.state = 'modified'
59       try :
60         self.isvalid(cr='oui')
61       except AsException,e:
62         if CONTEXT.debug : traceback.print_exc()
63         self.cr.fatal(string.join(["Mot-clé facteur multiple : ",self.nom,str(e)]))
64       for i in self.data:
65         self.cr.add(i.report())
66       return self.cr
67