1 #@ MODIF V_MCSIMP Validation DATE 07/09/2009 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 - 2002 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.
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.
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.
22 # ======================================================================
25 Ce module contient la classe mixin MCSIMP qui porte les méthodes
26 nécessaires pour réaliser la validation d'un objet de type MCSIMP
29 Une classe mixin porte principalement des traitements et est
30 utilisée par héritage multiple pour composer les traitements.
37 from Noyau import N_CR
38 from Noyau.N_Exception import AsException
39 from Noyau.N_VALIDATOR import ValError,TypeProtocol,CardProtocol,IntoProtocol
40 from Noyau.N_VALIDATOR import listProto
45 Cette classe est quasiment identique à la classe originale d'EFICAS
46 a part quelques changements cosmétiques et des chagements pour la
47 faire fonctionner de facon plus autonome par rapport à l'environnement
50 A mon avis, il faudrait aller plus loin et réduire les dépendances
51 amont au strict nécessaire.
53 - Est il indispensable de faire l'évaluation de la valeur dans le contexte
54 du jdc dans cette classe.
56 - Ne pourrait on pas doter les objets en présence des méthodes suffisantes
57 pour éviter les tests un peu particuliers sur GEOM, PARAMETRE et autres. J'ai
58 d'ailleurs modifié la classe pour éviter l'import de GEOM
64 self.state='undetermined'
65 self.typeProto=TypeProtocol("type",typ=self.definition.type)
66 self.intoProto=IntoProtocol("into",into=self.definition.into,val_min=self.definition.val_min,val_max=self.definition.val_max)
67 self.cardProto=CardProtocol("card",min=self.definition.min,max=self.definition.max)
70 if hasattr(self,'valid'):
76 def set_valid(self,valid):
77 old_valid=self.get_valid()
79 self.state = 'unchanged'
80 if not old_valid or old_valid != self.valid :
83 def isvalid(self,cr='non'):
85 Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP
87 - 0 si l'objet est invalide
88 - 1 si l'objet est valide
90 Le paramètre cr permet de paramétrer le traitement. Si cr == 'oui'
91 la méthode construit également un comte-rendu de validation
92 dans self.cr qui doit avoir été créé préalablement.
94 if self.state == 'unchanged':
99 # verification presence
100 if self.isoblig() and v == None :
102 self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé")))
105 lval=listProto.adapt(v)
109 self.cr.fatal("None n'est pas une valeur autorisée")
112 #typeProto=TypeProtocol("type",typ=self.definition.type)
113 #intoProto=IntoProtocol("into",into=self.definition.into,val_min=self.definition.val_min,val_max=self.definition.val_max)
114 #cardProto=CardProtocol("card",min=self.definition.min,max=self.definition.max)
115 #typeProto=self.definition.typeProto
116 #intoProto=self.definition.intoProto
117 #cardProto=self.definition.cardProto
118 typeProto=self.typeProto
119 intoProto=self.intoProto
120 cardProto=self.cardProto
122 #un cr est demandé : on collecte tous les types d'erreur
128 self.cr.fatal(str(e))
134 self.cr.fatal(str(e))
136 cardProto.adapt(lval)
139 self.cr.fatal(str(e))
141 # On verifie les validateurs s'il y en a et si necessaire (valid == 1)
143 if valid and self.definition.validators:
145 self.definition.validators.convert(lval)
147 self.cr.fatal(string.join(("Mot-clé",self.nom,"invalide :",str(e),"\nCritere de validite:",self.definition.validators.info())))
150 #si pas de cr demande, on sort a la toute premiere erreur
155 cardProto.adapt(lval)
156 if self.definition.validators:
157 if hasattr(self.definition.validators,'set_MCSimp'):
158 self.definition.validators.set_MCSimp(self)
159 self.definition.validators.convert(lval)
163 self.set_valid(valid)
167 """ indique si le mot-clé est obligatoire
169 return self.definition.statut=='o'
171 def init_modif_up(self):
173 Propage l'état modifié au parent s'il existe et n'est l'objet
176 if self.parent and self.parent != self :
177 self.parent.state = 'modified'
180 """ génère le rapport de validation de self """
182 self.cr.debut = "Mot-clé simple : "+self.nom
183 self.cr.fin = "Fin Mot-clé simple : "+self.nom
184 self.state = 'modified'
186 self.isvalid(cr='oui')
187 except AsException,e:
188 if CONTEXT.debug : traceback.print_exc()
189 self.cr.fatal(string.join(("Mot-clé simple : ",self.nom,str(e))))