1 #@ MODIF V_MCSIMP Validation DATE 16/05/2007 AUTEUR COURTOIS M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
21 # ======================================================================
24 Ce module contient la classe mixin MCSIMP qui porte les méthodes
25 nécessaires pour réaliser la validation d'un objet de type MCSIMP
28 Une classe mixin porte principalement des traitements et est
29 utilisée par héritage multiple pour composer les traitements.
36 from Noyau import N_CR
37 from Noyau.N_Exception import AsException
38 from Noyau.N_VALIDATOR import ValError,TypeProtocol,CardProtocol,IntoProtocol
39 from Noyau.N_VALIDATOR import listProto
44 Cette classe est quasiment identique à la classe originale d'EFICAS
45 a part quelques changements cosmétiques et des chagements pour la
46 faire fonctionner de facon plus autonome par rapport à l'environnement
49 A mon avis, il faudrait aller plus loin et réduire les dépendances
50 amont au strict nécessaire.
52 - Est il indispensable de faire l'évaluation de la valeur dans le contexte
53 du jdc dans cette classe.
55 - Ne pourrait on pas doter les objets en présence des méthodes suffisantes
56 pour éviter les tests un peu particuliers sur GEOM, PARAMETRE et autres. J'ai
57 d'ailleurs modifié la classe pour éviter l'import de GEOM
63 self.state='undetermined'
64 self.typeProto=TypeProtocol("type",typ=self.definition.type)
65 self.intoProto=IntoProtocol("into",into=self.definition.into,val_min=self.definition.val_min,val_max=self.definition.val_max)
66 self.cardProto=CardProtocol("card",min=self.definition.min,max=self.definition.max)
69 if hasattr(self,'valid'):
75 def set_valid(self,valid):
76 old_valid=self.get_valid()
78 self.state = 'unchanged'
79 if not old_valid or old_valid != self.valid :
82 def isvalid(self,cr='non'):
84 Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP
86 - 0 si l'objet est invalide
87 - 1 si l'objet est valide
89 Le paramètre cr permet de paramétrer le traitement. Si cr == 'oui'
90 la méthode construit également un comte-rendu de validation
91 dans self.cr qui doit avoir été créé préalablement.
93 if self.state == 'unchanged':
98 # verification presence
99 if self.isoblig() and v == None :
101 self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé")))
104 lval=listProto.adapt(v)
108 self.cr.fatal("None n'est pas une valeur autorisée")
111 #typeProto=TypeProtocol("type",typ=self.definition.type)
112 #intoProto=IntoProtocol("into",into=self.definition.into,val_min=self.definition.val_min,val_max=self.definition.val_max)
113 #cardProto=CardProtocol("card",min=self.definition.min,max=self.definition.max)
114 #typeProto=self.definition.typeProto
115 #intoProto=self.definition.intoProto
116 #cardProto=self.definition.cardProto
117 typeProto=self.typeProto
118 intoProto=self.intoProto
119 cardProto=self.cardProto
121 #un cr est demandé : on collecte tous les types d'erreur
127 self.cr.fatal(str(e))
133 self.cr.fatal(str(e))
135 cardProto.adapt(lval)
138 self.cr.fatal(str(e))
140 # On verifie les validateurs s'il y en a et si necessaire (valid == 1)
142 if valid and self.definition.validators:
144 self.definition.validators.convert(lval)
146 self.cr.fatal(string.join(("Mot-clé",self.nom,"invalide :",str(e),"\nCritere de validite:",self.definition.validators.info())))
149 #si pas de cr demande, on sort a la toute premiere erreur
154 cardProto.adapt(lval)
155 if self.definition.validators:
156 self.definition.validators.convert(lval)
160 self.set_valid(valid)
164 """ indique si le mot-clé est obligatoire
166 return self.definition.statut=='o'
168 def init_modif_up(self):
170 Propage l'état modifié au parent s'il existe et n'est l'objet
173 if self.parent and self.parent != self :
174 self.parent.state = 'modified'
177 """ génère le rapport de validation de self """
179 self.cr.debut = "Mot-clé simple : "+self.nom
180 self.cr.fin = "Fin Mot-clé simple : "+self.nom
181 self.state = 'modified'
183 self.isvalid(cr='oui')
184 except AsException,e:
185 if CONTEXT.debug : traceback.print_exc()
186 self.cr.fatal(string.join(("Mot-clé simple : ",self.nom,str(e))))