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 methodes
26 necessaires pour realiser la validation d'un objet de type MCSIMP
29 Une classe mixin porte principalement des traitements et est
30 utilisee par heritage 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 a la classe originale d'EFICAS
46 a part quelques changements cosmetiques et des chagements pour la
47 faire fonctionner de facon plus autonome par rapport a l'environnement
50 A mon avis, il faudrait aller plus loin et reduire les dependances
51 amont au strict necessaire.
53 - Est il indispensable de faire l'evaluation de la valeur dans le contexte
54 du jdc dans cette classe.
56 - Ne pourrait on pas doter les objets en presence des methodes suffisantes
57 pour eviter les tests un peu particuliers sur GEOM, PARAMETRE et autres. J'ai
58 d'ailleurs modifie la classe pour eviter 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 methode retourne un indicateur de validite de l'objet de type MCSIMP
87 - 0 si l'objet est invalide
88 - 1 si l'objet est valide
90 Le parametre cr permet de parametrer le traitement. Si cr == 'oui'
91 la methode construit egalement un comte-rendu de validation
92 dans self.cr qui doit avoir ete cree prealablement.
94 if self.state == 'unchanged':
99 # verification presence
100 if self.isoblig() and v == None :
102 self.cr.fatal(string.join(("Mot-cle : ",self.nom," obligatoire non valorise")))
105 lval=listProto.adapt(v)
109 self.cr.fatal("None n'est pas une valeur autorisee")
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 demande : 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-cle",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-cle est obligatoire
169 return self.definition.statut=='o'
171 def init_modif_up(self):
173 Propage l'etat modifie au parent s'il existe et n'est l'objet
176 if self.parent and self.parent != self :
177 self.parent.state = 'modified'
180 """ genere le rapport de validation de self """
182 self.cr.debut = "Mot-cle simple : "+self.nom
183 self.cr.fin = "Fin Mot-cle 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-cle simple : ",self.nom,str(e))))