+#@ MODIF N_ASSD Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
"""
+#@ MODIF N_BLOC Noyau DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe de definition BLOC
qui permet de spécifier les caractéristiques des blocs de mots clés
"""
-import types,string
+import types,string,sys
import traceback
import N_ENTITE
Les éventuels messages d'erreur sont écrits dans l'objet compte-rendu (self.cr).
"""
if type(self.fr) != types.StringType :
- self.cr.fatal("L'attribut 'fr' doit être une chaîne de caractères : %s" %`self.fr`)
+ self.cr.fatal("L'attribut 'fr' doit etre une chaine de caractères : %s" %`self.fr`)
if type(self.docu) != types.StringType :
- self.cr.fatal("L'attribut 'docu' doit être une chaîne de caractères : %s" %`self.docu`)
+ self.cr.fatal("L'attribut 'docu' doit etre une chaine de caractères : %s" %`self.docu`)
if type(self.regles) != types.TupleType :
- self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles` )
+ self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles` )
if self.statut not in ['f','o'] :
self.cr.fatal("L'attribut 'statut' doit valoir 'o' ou 'f' : %s" %`self.statut` )
if self.condition != None :
if type(self.condition) != types.StringType :
- self.cr.fatal("L'attribut 'condition' doit être une chaîne de caractères : %s" %`self.condition`)
+ self.cr.fatal("L'attribut 'condition' doit etre une chaine de caractères : %s" %`self.condition`)
else:
self.cr.fatal("La condition ne doit pas valoir None !")
self.verif_cata_regles()
- def verif_presence(self,dict):
+ def verif_presence(self,dict,globs):
"""
Cette méthode vérifie si le dictionnaire passé en argument (dict)
est susceptible de contenir un bloc de mots-clés conforme à la
"""
# On recopie le dictionnaire pour protéger l'original
dico=dict.copy()
- # XXX on ajoute AsType pour permettre les évaluations
- # XXX pour le moment en commentaire. Voir si on ne peut pas faire autrement.
- #dico['AsType']=AsType
if self.condition != None :
try:
- test = eval(self.condition,dico)
+ test = eval(self.condition,globs,dico)
return test
except NameError:
# erreur 'normale' : un mot-clé n'est pas présent et on veut l'évaluer dans la condition
+ if CONTEXT.debug:
+ l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+ print "WARNING : Erreur a l'evaluation de la condition "+string.join(l)
return 0
except SyntaxError:
# le texte de la condition n'est pas du Python correct --> faute de catalogue
+#@ MODIF N_CO Noyau DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
from N_ASSD import ASSD
+from N_Exception import AsException
+import N_utils
class CO(ASSD):
def __init__(self,nom):
# On demande le nommage du concept
#
if self.parent :
- self.parent.NommerSdprod(self,nom)
+ try:
+ self.parent.NommerSdprod(self,nom)
+ except AsException,e:
+ appel=N_utils.callee_where(niveau=2)
+ raise AsException("Concept CO, fichier: ",appel[1]," ligne : ",appel[0],'\n',e)
else:
self.nom=nom
+#@ MODIF N_CR Noyau DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
""" Ce module contient la classe compte-rendu de validation
"""
def __str__(self):
"""
- Retourne une chaîne de caractères décorée et représentative de self
+ Retourne une chaine de caractères décorée et représentative de self
"""
s=''
self.beautifie_messages()
- s=s+string.join(self.crok_belle)
- s=s+string.join(self.crwarn_belle)
- s=s+string.join(self.crfatal_belle)
- s=s+string.join(self.crexception_belle)
+ s=s+string.join(self.crok_belle,'')
+ s=s+string.join(self.crwarn_belle,'')
+ s=s+string.join(self.crfatal_belle,'')
+ s=s+string.join(self.crexception_belle,'')
for subcr in self.subcr:
if self.verbeux == 'oui':
s=s+str(subcr)+'\n'
def report(self,decalage = 2):
"""
- Retourne une chaîne de caractères non encadrée mais représentative de self
+ Retourne une chaine de caractères non encadrée mais représentative de self
"""
s=''
# on stocke dans s les messages de premier niveau
def get_mess_fatal(self):
"""
- Retourne une chaîne de caractères contenant les messages de
+ Retourne une chaine de caractères contenant les messages de
la liste crfatal (du dernier au premier)
"""
self.crfatal.reverse()
def get_mess_exception(self):
"""
- Retourne une chaîne de caractères contenant les messages
+ Retourne une chaine de caractères contenant les messages
de la liste crexception (du dernier au premier)
"""
self.crexception.reverse()
def justify_text(texte='',cesure=50):
"""
- Prend la chaîne de caractères 'texte' et la retourne avec un retour chariot
+ Prend la chaine de caractères 'texte' et la retourne avec un retour chariot
tous les 'cesure' caractères s'il y a lieu (le retour chariot est placé dans un blanc
et non au milieu d'un mot
"""
def encadre_message(texte,motif):
"""
- Retourne la chaîne de caractères texte entourée d'un cadre formés
+ Retourne la chaine de caractères texte entourée d'un cadre formés
d'éléments 'motif'
"""
texte = justify_text(texte,cesure=80)
+#@ MODIF N_ENTITE Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe ENTITE qui est la classe de base
de toutes les classes de definition d'EFICAS.
+#@ MODIF N_ETAPE Noyau DATE 26/06/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe ETAPE qui sert à vérifier et à exécuter
une commande
"""
if not self.isactif():return
+ self.sdnom=nom
try:
if self.parent:
sd= self.parent.create_sdprod(self,nom)
sd_prod=self.definition.sd_prod
# on teste maintenant si la SD est réutilisée ou s'il faut la créer
if self.reuse:
- if AsType(self.reuse) != sd_prod:
- raise AsException("type de concept reutilise incompatible avec type produit")
+ # Il est preferable de traiter cette erreur ultérieurement : ce n'est pas une erreur fatale
+ #if AsType(self.reuse) != sd_prod:
+ # raise AsException("type de concept reutilise incompatible avec type produit")
self.sd=self.reuse
else:
self.sd= sd_prod(etape=self)
- if self.definition.reentrant == 'o':
- self.reuse = self.sd
+ # Si reuse n'a pas ete donné, c'est une erreur. Ne pas corriger afin de la detecter ensuite
+ #if self.definition.reentrant == 'o':
+ # self.reuse = self.sd
return self.sd
def get_type_produit(self):
def supprime(self):
"""
Méthode qui supprime toutes les références arrières afin que l'objet puisse
- être correctement détruit par le garbage collector
+ etre correctement détruit par le garbage collector
"""
N_MCCOMPO.MCCOMPO.supprime(self)
self.jdc=None
+#@ MODIF N_EVAL Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
"""
+#@ MODIF N_Exception Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe AsException
"""
+#@ MODIF N_FACT Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
""" Ce module contient la classe de definition FACT
qui permet de spécifier les caractéristiques des mots clés facteurs
"""
def verif_cata(self):
if type(self.min) != types.IntType :
if self.min != '**':
- self.cr.fatal("L'attribut 'min' doit être un entier : %s" %`self.min`)
+ self.cr.fatal("L'attribut 'min' doit etre un entier : %s" %`self.min`)
if type(self.max) != types.IntType :
if self.max != '**':
- self.cr.fatal("L'attribut 'max' doit être un entier : %s" %`self.max`)
+ self.cr.fatal("L'attribut 'max' doit etre un entier : %s" %`self.max`)
if self.min > self.max :
self.cr.fatal("Nombres d'occurrence min et max invalides : %s %s" %(`self.min`,`self.max`))
if type(self.fr) != types.StringType :
- self.cr.fatal("L'attribut 'fr' doit être une chaîne de caractères : %s" %`self.fr`)
+ self.cr.fatal("L'attribut 'fr' doit etre une chaine de caractères : %s" %`self.fr`)
if type(self.regles) != types.TupleType :
- self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles`)
+ self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`)
if self.statut not in ['f','o','c','d'] :
self.cr.fatal("L'attribut 'statut' doit valoir 'o','f','c' ou 'd' : %s" %`self.statut`)
if type(self.docu) != types.StringType :
- self.cr.fatal("L'attribut 'docu' doit être une chaîne de caractères : %s" %`self.docu`)
+ self.cr.fatal("L'attribut 'docu' doit etre une chaine de caractères : %s" %`self.docu`)
self.verif_cata_regles()
+#@ MODIF N_FONCTION Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
from N_ASSD import ASSD
class FONCTION(ASSD):pass
+#@ MODIF N_FORM Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
import N_MACRO
import N_FORM_ETAPE
+#@ MODIF N_FORM_ETAPE Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
import N_MACRO_ETAPE
class FORM_ETAPE(N_MACRO_ETAPE.MACRO_ETAPE):
+#@ MODIF N_GEOM Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
"""
+#@ MODIF N_JDC Noyau DATE 26/06/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe JDC qui sert à interpréter un jeu de commandes
"""
from Accas import *
NONE = None
"""
+
from N_utils import SEP
def __init__(self,definition=None,procedure=None,cata=None,
self.cr = self.CR(debut = "CR phase d'initialisation",
fin = "fin CR phase d'initialisation")
self.g_context={}
+ # Liste pour stocker tous les concepts produits dans le JDC
self.sds=[]
+ # Dictionnaire pour stocker tous les concepts du JDC (acces rapide par le nom)
+ self.sds_dict={}
self.etapes=[]
self.mc_globaux={}
self.current_context={}
+ self.condition_context={}
self.index_etape_courante=0
def compile(self):
if type(obj_cata) == types.ModuleType :
init2 = "from "+obj_cata.__name__+" import *"
exec init2 in self.g_context
+
+ # Initialisation du contexte global pour l'évaluation des conditions de BLOC
+ # On utilise une copie de l'initialisation du contexte du jdc
+ self.condition_context=self.g_context.copy()
+
# Si l'attribut context_ini n'est pas vide, on ajoute au contexte global
# le contexte initial (--> permet d'évaluer un JDC en récupérant un contexte
# d'un autre par exemple)
self.NommerSdprod(sd,nomsd)
return sd
- def NommerSdprod(self,sd,sdnom):
+ def NommerSdprod(self,sd,sdnom,restrict='non'):
"""
Nomme la SD apres avoir verifie que le nommage est possible : nom
non utilise
Met le concept créé dans le concept global g_context
"""
if CONTEXT.debug : print "JDC.NommerSdprod ",sd,sdnom
- o=self.g_context.get(sdnom,None)
+ o=self.sds_dict.get(sdnom,None)
if isinstance(o,ASSD):
raise AsException("Nom de concept deja defini : %s" % sdnom)
# ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
# Ajoute a la creation (appel de reg_sd).
- self.g_context[sdnom]=sd
+ self.sds_dict[sdnom]=sd
sd.nom=sdnom
+ # En plus si restrict vaut 'non', on insere le concept dans le contexte du JDC
+ if restrict == 'non':
+ self.g_context[sdnom]=sd
+
def reg_sd(self,sd):
"""
Methode appelee dans l __init__ d un ASSD lors de sa creation
+#@ MODIF N_JDC_CATA Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe de definition JDC_CATA
qui permet de spécifier les caractéristiques d'un JDC
Méthode de vérification des attributs de définition
"""
if type(self.regles) != types.TupleType :
- self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles`)
+ self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`)
self.verif_cata_regles()
def verif_cata_regles(self):
+#@ MODIF N_MACRO Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe de definition MACRO
qui permet de spécifier les caractéristiques d'une macro-commande
non répétable ne doit apparaitre qu'une fois dans une exécution. C'est du ressort
de l'objet gérant le contexte d'exécution de vérifier cette contrainte.
- - fr : commentaire associé en français
+ - fr : commentaire associé en francais
- ang : commentaire associé en anglais
- op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette
fonction est exécutée lors des phases d'initialisation de l'étape associée.
- - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent être
+ - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre
rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement.
Si niveau vaut None, l'opérateur est rangé au niveau global.
Méthode de vérification des attributs de définition
"""
if self.op is not None and (type(self.op) != types.IntType or self.op > 0) :
- self.cr.fatal("L'attribut 'op' doit être un entier signé : %s" %`self.op`)
+ self.cr.fatal("L'attribut 'op' doit etre un entier signé : %s" %`self.op`)
if self.proc is not None and type(self.proc) != types.FunctionType:
- self.cr.fatal("L'attribut op doit être une fonction Python : %s" % `self.proc`)
+ self.cr.fatal("L'attribut op doit etre une fonction Python : %s" % `self.proc`)
if type(self.regles) != types.TupleType :
- self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles`)
+ self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`)
if type(self.fr) != types.StringType :
- self.cr.fatal("L'attribut 'fr' doit être une chaîne de caractères : %s" %`self.fr`)
+ self.cr.fatal("L'attribut 'fr' doit etre une chaine de caractères : %s" %`self.fr`)
if type(self.docu) != types.StringType :
- self.cr.fatal("L'attribut 'docu' doit être une chaîne de caractères : %s" %`self.docu` )
+ self.cr.fatal("L'attribut 'docu' doit etre une chaine de caractères : %s" %`self.docu` )
if type(self.nom) != types.StringType :
- self.cr.fatal("L'attribut 'nom' doit être une chaîne de caractères : %s" %`self.nom`)
+ self.cr.fatal("L'attribut 'nom' doit etre une chaine de caractères : %s" %`self.nom`)
if self.reentrant not in ('o','n','f'):
self.cr.fatal("L'attribut 'reentrant' doit valoir 'o','n' ou 'f' : %s" %`self.reentrant`)
self.verif_cata_regles()
+#@ MODIF N_MACRO_ETAPE Noyau DATE 26/06/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe MACRO_ETAPE qui sert à vérifier et à exécuter
une commande
"""
if not self.isactif():return
+ self.sdnom=nom
try:
# On positionne la macro self en tant que current_step pour que les
# étapes créées lors de l'appel à sd_prod et à op_init aient la macro
# on teste maintenant si la SD est réutilisée ou s'il faut la créer
if self.reuse:
- if AsType(self.reuse) != sd_prod:
- raise AsException("type de concept reutilise incompatible avec type produit")
+ # Il est preferable de traiter cette erreur ultérieurement : ce n'est pas une erreur fatale
+ #if AsType(self.reuse) != sd_prod:
+ # raise AsException("type de concept reutilise incompatible avec type produit")
self.sd=self.reuse
else:
if sd_prod == None:
else:
self.sd= sd_prod(etape=self)
self.typret=sd_prod
- if self.definition.reentrant == 'o':
- self.reuse = self.sd
+ # Si reuse n'a pas ete donné, c'est une erreur. Ne pas corriger afin de la detecter ensuite
+ #if self.definition.reentrant == 'o':
+ # self.reuse = self.sd
return self.sd
def get_type_produit(self,force=0):
# mémorisée dans self.index_etape_courante
# Si on insère des commandes (par ex, dans EFICAS), il faut
# préalablement remettre ce pointeur à 0
- index_etape=self.etapes.index(etape)
+ if etape:
+ index_etape=self.etapes.index(etape)
+ else:
+ index_etape=len(self.etapes)
+
if index_etape >= self.index_etape_courante:
# On calcule le contexte en partant du contexte existant
d=self.current_context
def supprime(self):
"""
Méthode qui supprime toutes les références arrières afin que
- l'objet puisse être correctement détruit par le garbage collector
+ l'objet puisse etre correctement détruit par le garbage collector
"""
N_MCCOMPO.MCCOMPO.supprime(self)
self.jdc=None
raise AsException("Le type du concept produit %s devrait etre une sur classe de %s" %(sd.__class__,sdprod))
# La propriete du concept est transferee a l'etape avec le type attendu par l'étape
etape.sd=sd
- #sd.__call__=sdprod
- #XXX Il semble plus logique que ce soit class et non pas call ???
- sd.__class__=sdprod
sd.etape=etape
+ # On donne au concept le type produit par la sous commande.
+ # Le principe est le suivant : apres avoir verifie que le type deduit par la sous commande
+ # est bien coherent avec celui initialement affecte par la macro (voir ci dessus)
+ # on affecte au concept ce type car il peut etre plus precis (derive, en general)
+ sd.__class__=sdprod
+ # On force également le nom stocké dans l'attribut sdnom : on lui donne le nom
+ # du concept associé à nomsd
+ etape.sdnom=sd.nom
+ elif etape.reuse != None:
+ # On est dans le cas d'une commande avec reutilisation d'un concept existant
+ # get_sd_prod fait le necessaire : verifications, associations, etc. mais ne cree
+ # pas un nouveau concept. Il retourne le concept reutilise
+ sd= etape.get_sd_prod()
+ # Dans le cas d'un concept nomme automatiquement : _xxx, __xxx,
+ # On force le nom stocke dans l'attribut sdnom de l'objet etape : on lui donne le nom
+ # du concept reutilise (sd ou etape.reuse c'est pareil)
+ # Ceci est indispensable pour eviter des erreurs lors des verifications des macros
+ # En effet une commande avec reutilisation d'un concept verifie que le nom de
+ # la variable a gauche du signe = est le meme que celui du concept reutilise.
+ # Lorsqu'une telle commande apparait dans une macro, on supprime cette verification.
+ if etape.sdnom[0] == '_':
+ etape.sdnom=sd.nom
else:
+ # On est dans le cas de la creation d'un nouveau concept
sd= etape.get_sd_prod()
- if sd != None and etape.reuse == None:
- # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation d un concept
+ if sd != None :
self.NommerSdprod(sd,nomsd)
return sd
- def NommerSdprod(self,sd,sdnom):
+ def NommerSdprod(self,sd,sdnom,restrict='non'):
"""
Cette methode est appelee par les etapes internes de la macro
La macro appelle le JDC pour valider le nommage
On considere que l espace de nom est unique et géré par le JDC
Si le nom est deja utilise, l appel leve une exception
+ Si restrict=='non', on insere le concept dans le contexte de la macro
+ Si restrict=='oui', on n'insere pas le concept dans le contexte de la macro
"""
+ # Normalement, lorsqu'on appelle cette methode, on ne veut nommer que des concepts nouvellement crees.
+ # Le filtrage sur les concepts a creer ou a ne pas creer est fait dans la methode
+ # create_sdprod. La seule chose a verifier apres conversion eventuelle du nom
+ # est de verifier que le nom n'est pas deja attribue. Ceci est fait en delegant
+ # au JDC par l'intermediaire du parent.
+
#XXX attention inconsistence : prefix et gcncon ne sont pas
# définis dans le package Noyau. La methode NommerSdprod pour
# les macros devrait peut etre etre déplacée dans Build ???
+
if CONTEXT.debug : print "MACRO.NommerSdprod: ",sd,sdnom
if hasattr(self,'prefix'):
# Dans le cas de l'include_materiau on ajoute un prefixe au nom du concept
if sdnom != self.prefix:sdnom=self.prefix+sdnom
+
if self.Outputs.has_key(sdnom):
# Il s'agit d'un concept de sortie de la macro produit par une sous commande
sdnom=self.Outputs[sdnom].nom
sdnom=self.gcncon('.')
else:
sdnom=self.gcncon('_')
- if self.sd != None and self.sd.nom == sdnom :
- # Il s'agit du concept produit par la macro, il a deja ete nomme.
- # On se contente de donner le meme nom au concept produit par la sous commande
- # sans passer par la routine de nommage
- sd.nom=sdnom
else:
- # On propage le nommage au contexte superieur
- self.parent.NommerSdprod(sd,sdnom)
+ # On est dans le cas d'un nom de concept global.
+ pass
+
+ if restrict == 'non':
+ # On demande le nommage au parent mais sans ajout du concept dans le contexte du parent
+ # car on va l'ajouter dans le contexte de la macro
+ self.parent.NommerSdprod(sd,sdnom,restrict='oui')
+ # On ajoute dans le contexte de la macro les concepts nommes
+ # Ceci est indispensable pour les CO (macro) dans un INCLUDE
+ self.g_context[sdnom]=sd
+ else:
+ # La demande de nommage vient probablement d'une macro qui a mis
+ # le concept dans son contexte. On ne traite plus que le nommage (restrict="oui")
+ self.parent.NommerSdprod(sd,sdnom,restrict='oui')
def delete_concept_after_etape(self,etape,sd):
"""
+#@ MODIF N_MCBLOC Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe MCBLOC qui sert à controler la valeur
d'un bloc de mots-clés par rapport à sa définition portée par un objet
+#@ MODIF N_MCCOMPO Noyau DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe MCCOMPO qui sert à factoriser les comportements
des OBJECT composites
dico_valeurs = self.cree_dict_valeurs(mc_liste)
for k,v in self.definition.entites.items():
if v.label != 'BLOC':continue
- if v.verif_presence(dico_valeurs):
+ # condition and a or b : Equivalent de l'expression : condition ? a : b du langage C
+ globs= self.jdc and self.jdc.condition_context or {}
+ if v.verif_presence(dico_valeurs,globs):
# Si le bloc existe :
# 1- on le construit
# 2- on l'ajoute à mc_liste
# Il nous reste à évaluer la présence des blocs en fonction du contexte qui a changé
for k,v in self.definition.entites.items():
if v.label != 'BLOC' : continue
- if v.verif_presence(dico):
- # le bloc k doit être présent : on crée temporairement l'objet MCBLOC correspondant
+ # condition and a or b : Equivalent de l'expression : condition ? a : b du langage C
+ globs= self.jdc and self.jdc.condition_context or {}
+ if v.verif_presence(dico,globs):
+ # le bloc k doit etre présent : on crée temporairement l'objet MCBLOC correspondant
# on lui passe un parent égal à None pour qu'il ne soit pas enregistré
bloc = v(nom=k,val=None,parent=None)
dico_bloc = bloc.cree_dict_valeurs()
def supprime(self):
"""
Méthode qui supprime toutes les références arrières afin que l'objet puisse
- être correctement détruit par le garbage collector
+ etre correctement détruit par le garbage collector
"""
N_OBJECT.OBJECT.supprime(self)
for child in self.mc_liste :
+#@ MODIF N_MCFACT Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe MCFACT qui sert à controler la valeur
d'un mot-clé facteur par rapport à sa définition portée par un objet
+#@ MODIF N_MCLIST Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe MCList qui sert à controler la valeur
d'une liste de mots-clés facteur par rapport à sa définition portée par un objet
def supprime(self):
"""
Méthode qui supprime toutes les références arrières afin que l'objet puisse
- être correctement détruit par le garbage collector
+ etre correctement détruit par le garbage collector
"""
self.parent = None
self.etape = None
if k == name:
if v.defaut != None : return v(None,k,None)
# si on passe ici, c'est que l'on demande un fils qui n'est pas possible --> erreur
- #print "Erreur : %s ne peut être un descendant de %s" %(name,self.nom)
+ #print "Erreur : %s ne peut etre un descendant de %s" %(name,self.nom)
return None
def isBLOC(self):
+#@ MODIF N_MCSIMP Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe MCSIMP qui sert à controler la valeur
d'un mot-clé simple par rapport à sa définition portée par un objet
+#@ MODIF N_OBJECT Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe OBJECT classe mère de tous les objets
servant à controler les valeurs par rapport aux définitions
def supprime(self):
"""
Méthode qui supprime les références arrières suffisantes pour
- que l'objet puisse être correctement détruit par le
+ que l'objet puisse etre correctement détruit par le
garbage collector
"""
self.parent = None
+#@ MODIF N_OPER Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe de definition OPER
qui permet de spécifier les caractéristiques d'un opérateur
non répétable ne doit apparaitre qu'une fois dans une exécution. C'est du ressort
de l'objet gérant le contexte d'exécution de vérifier cette contrainte.
- - fr : commentaire associé en français
+ - fr : commentaire associé en francais
- ang : commentaire associé en anglais
- op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette
fonction est exécutée lors des phases d'initialisation de l'étape associée.
- - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent être
+ - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre
rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement.
Si niveau vaut None, l'opérateur est rangé au niveau global.
Méthode de vérification des attributs de définition
"""
if type(self.regles) != types.TupleType :
- self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles`)
+ self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`)
if type(self.fr) != types.StringType :
- self.cr.fatal("L'attribut 'fr' doit être une chaîne de caractères : %s" %`self.fr`)
+ self.cr.fatal("L'attribut 'fr' doit etre une chaine de caractères : %s" %`self.fr`)
if self.reentrant not in ('o','n','f'):
self.cr.fatal("L'attribut 'reentrant' doit valoir 'o','n' ou 'f' : %s" %`self.reentrant`)
if type(self.docu) != types.StringType :
- self.cr.fatal("L'attribut 'docu' doit être une chaîne de caractères : %s" %`self.docu` )
+ self.cr.fatal("L'attribut 'docu' doit etre une chaine de caractères : %s" %`self.docu` )
if type(self.nom) != types.StringType :
- self.cr.fatal("L'attribut 'nom' doit être une chaîne de caractères : %s" %`self.nom`)
+ self.cr.fatal("L'attribut 'nom' doit etre une chaine de caractères : %s" %`self.nom`)
if type(self.op) != types.IntType :
- self.cr.fatal("L'attribut 'op' doit être un entier signé : %s" %`self.op`)
+ self.cr.fatal("L'attribut 'op' doit etre un entier signé : %s" %`self.op`)
self.verif_cata_regles()
def supprime(self):
+#@ MODIF N_PROC Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe de definition PROC
qui permet de spécifier les caractéristiques d'une procédure
non répétable ne doit apparaitre qu'une fois dans une exécution. C'est du ressort
de l'objet gérant le contexte d'exécution de vérifier cette contrainte.
- - fr : commentaire associé en français
+ - fr : commentaire associé en francais
- ang : commentaire associé en anglais
- op_init : cet attribut vaut None ou une fonction. Si cet attribut ne vaut pas None, cette
fonction est exécutée lors des phases d'initialisation de l'étape associée.
- - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent être
+ - niveau : indique le niveau dans lequel est rangé l'opérateur. Les opérateurs peuvent etre
rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement.
Si niveau vaut None, l'opérateur est rangé au niveau global.
Méthode de vérification des attributs de définition
"""
if type(self.regles) != types.TupleType :
- self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles`)
+ self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`)
if type(self.fr) != types.StringType :
- self.cr.fatal("L'attribut 'fr' doit être une chaîne de caractères : %s" %`self.fr`)
+ self.cr.fatal("L'attribut 'fr' doit etre une chaine de caractères : %s" %`self.fr`)
if self.reentrant not in ('o','n','f'):
self.cr.fatal("L'attribut 'reentrant' doit valoir 'o','n' ou 'f' : %s" %`self.reentrant`)
if type(self.docu) != types.StringType :
- self.cr.fatal("L'attribut 'docu' doit être une chaîne de caractères : %s" %`self.docu` )
+ self.cr.fatal("L'attribut 'docu' doit etre une chaine de caractères : %s" %`self.docu` )
if type(self.nom) != types.StringType :
- self.cr.fatal("L'attribut 'nom' doit être une chaîne de caractères : %s" %`self.nom`)
+ self.cr.fatal("L'attribut 'nom' doit etre une chaine de caractères : %s" %`self.nom`)
if type(self.op) != types.IntType :
- self.cr.fatal("L'attribut 'op' doit être un entier signé : %s" %`self.op`)
+ self.cr.fatal("L'attribut 'op' doit etre un entier signé : %s" %`self.op`)
self.verif_cata_regles()
def supprime(self):
+#@ MODIF N_PROC_ETAPE Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe PROC_ETAPE qui sert à vérifier et à exécuter
une procédure
def supprime(self):
"""
Méthode qui supprime toutes les références arrières afin que l'objet puisse
- être correctement détruit par le garbage collector
+ etre correctement détruit par le garbage collector
"""
N_MCCOMPO.MCCOMPO.supprime(self)
self.jdc=None
+#@ MODIF N_REGLE Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mere pour les classes de definition des regles d exclusion.
+#@ MODIF N_SIMP Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
""" Ce module contient la classe de definition SIMP
qui permet de spécifier les caractéristiques des mots clés simples
"""
"""
if type(self.min) != types.IntType :
if self.min != '**':
- self.cr.fatal("L'attribut 'min' doit être un entier : "+`self.min`)
+ self.cr.fatal("L'attribut 'min' doit etre un entier : "+`self.min`)
if type(self.max) != types.IntType :
if self.max != '**' :
- self.cr.fatal("L'attribut 'max' doit être un entier : "+`self.max`)
+ self.cr.fatal("L'attribut 'max' doit etre un entier : "+`self.max`)
if self.min > self.max :
self.cr.fatal("Nombres d'occurrence min et max invalides : %s %s" %(`self.min`,`self.max`))
if type(self.fr) != types.StringType :
- self.cr.fatal("L'attribut 'fr' doit être une chaîne de caractères : %s" +`self.fr`)
+ self.cr.fatal("L'attribut 'fr' doit etre une chaine de caractères : %s" +`self.fr`)
if self.statut not in ['o','f','c','d']:
self.cr.fatal("L'attribut 'statut' doit valoir 'o','f','c' ou 'd' : %s" %`self.statut`)
if self.homo != 0 and self.homo != 1 :
self.cr.fatal("L'attribut 'homo' doit valoir 0 ou 1 : %s" %`self.homo`)
if self.into != None :
if type(self.into) != types.TupleType :
- self.cr.fatal("L'attribut 'into' doit être un tuple : %s" %`self.into`)
+ self.cr.fatal("L'attribut 'into' doit etre un tuple : %s" %`self.into`)
if self.position not in ['local','global','global_jdc']:
self.cr.fatal("L'attribut 'position' doit valoir 'local','global' ou 'global_jdc' : %s" %`self.position`)
+#@ MODIF N__F Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
import UserDict
class _F(UserDict.UserDict):
+#@ MODIF N_utils Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient des fonctions utilitaires
"""
def repr_float(valeur):
"""
- Cette fonction représente le réel valeur comme une chaîne de caractères
+ Cette fonction représente le réel valeur comme une chaine de caractères
sous forme mantisse exposant si nécessaire cad si le nombre contient plus de
5 caractères
- NB : valeur est un réel au format Python ou une chaîne de caractères représentant un réel
+ NB : valeur est un réel au format Python ou une chaine de caractères représentant un réel
"""
if type(valeur) == types.StringType : valeur = eval(valeur)
if valeur == 0. : return '0.0'
+#@ MODIF __init__ Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce package fournit les classes de base d'EFICAS.
Ces classes permettent d'effectuer quelques opérations basiques :
+#@ MODIF context Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
_root=None
_cata=None
debug=0
+#@ MODIF nommage Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module sert à nommer les concepts produits par les commandes.
Le nom du concept est obtenu en appelant la fonction GetNomConceptResultat
-version = "6.2.24"
-date = "15/03/2002"
-
+#@ MODIF properties Accas DATE 29/08/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# RESPONSABLE D6BHHHH J-P.LEFEBVRE
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR
+# DE LA VERSION DU CODE_ASTER ASSOCIE
+#----------------------------------------------------------------------
+version = "6.3.14"
+date = "29/08/2002"
+#@ MODIF V_AU_MOINS_UN Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
class AU_MOINS_UN:
"""
+#@ MODIF V_A_CLASSER Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
import types
elif type(args[0]) == types.StringType:
self.args0 = (args[0],)
else :
- print "Le premier argument de :",args," doit être un tuple ou une string"
+ print "Le premier argument de :",args," doit etre un tuple ou une string"
if type(args[1]) == types.TupleType:
self.args1 = args[1]
elif type(args[1]) == types.StringType:
self.args1 = (args[1],)
else :
- print "Le deuxième argument de :",args," doit être un tuple ou une string"
+ print "Le deuxième argument de :",args," doit etre un tuple ou une string"
# création de la liste des mcs
liste = []
for arg0 in self.args0:
couple.append(nom)
if len(couple) > 0 :
l_couples.append(tuple(couple))
- # l_couples peut être vide si l'on n'a pas réussi à trouver au moins un
+ # l_couples peut etre vide si l'on n'a pas réussi à trouver au moins un
# élément de self.mcs
if len(l_couples) == 0 :
message = "- Il faut qu'au moins un objet de la liste : "+`self.args0`+\
if len(couple) == 1 :
# on a un 'faux' couple
if couple[0] not in self.args1:
- text = text+"- L'objet : "+couple[0]+" doit être suivi d'un objet de la liste : "+\
+ text = text+"- L'objet : "+couple[0]+" doit etre suivi d'un objet de la liste : "+\
`self.args1`+'\n'
test = 0
else :
# ce n'est pas le seul couple --> licite
break
else :
- text = text+"- L'objet : "+couple[0]+" doit être précédé d'un objet de la liste : "+\
+ text = text+"- L'objet : "+couple[0]+" doit etre précédé d'un objet de la liste : "+\
`self.args0`+'\n'
test = 0
elif couple not in self.liste_couples :
- text = text+"- L'objet : "+couple[0]+" ne peut être suivi de : "+couple[1]+'\n'
+ text = text+"- L'objet : "+couple[0]+" ne peut etre suivi de : "+couple[1]+'\n'
test = 0
return text,test
+#@ MODIF V_ENSEMBLE Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
class ENSEMBLE:
"""
for mc in self.mcs:
if mc != pivot :
if not args.has_key(mc):
- text = text + "- "+ pivot + " étant présent, "+mc+" doit être présent"+'\n'
+ text = text + "- "+ pivot + " étant présent, "+mc+" doit etre présent"+'\n'
test = 0
return text,test
+#@ MODIF V_ETAPE Validation DATE 26/06/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin ETAPE qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type ETAPE
utilisée par héritage multiple pour composer les traitements.
"""
# Modules Python
-import string,types
+import string,types,sys
import traceback
# Modules EFICAS
else :
if cr == 'oui' : self.cr.fatal("Concept retourné non défini")
valid = 0
- # on teste, si elle existe, le nom de la sd (sa longueur doit être <= 8 caractères)
+ # on teste, si elle existe, le nom de la sd (sa longueur doit etre <= 8 caractères)
if self.sd != None :
# la SD existe déjà : on regarde son nom
if self.sd.nom != None :
# Erreur pendant le calcul du type retourné
if CONTEXT.debug:traceback.print_exc()
self.sd=None
- if cr == 'oui' : self.cr.fatal('Impossible d affecter un type au résultat')
+ if cr == 'oui' :
+ l=traceback.format_exception(sys.exc_info()[0],
+ sys.exc_info()[1],
+ sys.exc_info()[2])
+ self.cr.fatal('Impossible d affecter un type au résultat\n'+string.join(l[2:]))
return 0
# on teste maintenant si la SD est r\351utilis\351e ou s'il faut la cr\351er
+ valid=1
if self.reuse:
if AsType(self.reuse) != sd_prod:
if cr == 'oui' : self.cr.fatal('Type de concept reutilise incompatible avec type produit')
- return 0
- self.sd=self.reuse
- return 1
+ valid= 0
+ if self.sdnom[0] != '_' and self.reuse.nom != self.sdnom:
+ # Le nom de la variable de retour (self.sdnom) doit etre le meme que celui du concept reutilise (self.reuse.nom)
+ if cr == 'oui' :
+ self.cr.fatal('Concept reutilise : le nom de la variable de retour devrait etre %s et non %s' %(self.reuse.nom,self.sdnom))
+ valid= 0
+ if valid:self.sd=self.reuse
else:
if sd_prod == None:# Pas de concept retourné
# Que faut il faire de l eventuel ancien sd ?
else:
# Le sd n existait pas , on ne le crée pas
if cr == 'oui' : self.cr.fatal("Concept retourné non défini")
- return 0
+ valid=0
if self.definition.reentrant == 'o':
- self.reuse = self.sd
- return 1
+ if cr == 'oui' : self.cr.fatal('Commande obligatoirement reentrante : specifier reuse=concept')
+ valid=0
+ #self.reuse = self.sd
+ return valid
def report(self):
+#@ MODIF V_EXCLUS Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
class EXCLUS:
"""
+#@ MODIF V_JDC Validation DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin JDC qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type JDC
self.cr.purge()
self.cr.debut="DEBUT CR validation : "+self.nom
self.cr.fin="FIN CR validation :"+self.nom
- self.state = 'modified'
- self.isvalid(cr='oui')
for e in self.etapes :
if e.isactif():
self.cr.add(e.report())
+ self.state = 'modified'
+ self.isvalid(cr='oui')
return self.cr
def isvalid(self,cr='non'):
+#@ MODIF V_MACRO_ETAPE Validation DATE 26/06/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin MACRO_ETAPE qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type MACRO_ETAPE
utilisée par héritage multiple pour composer les traitements.
"""
# Modules Python
-import string,types
+import string,types,sys
import traceback
# Modules EFICAS
old_valid = self.valid
else:
old_valid = None
- # on teste, si elle existe, le nom de la sd (sa longueur doit être <= 8 caractères)
+ # on teste, si elle existe, le nom de la sd (sa longueur doit etre <= 8 caractères)
if self.sd != None :
# la SD existe déjà : on regarde son nom
if self.sd.get_name() != None :
# Erreur pendant le calcul du type retourné
if CONTEXT.debug:traceback.print_exc()
self.sd=None
- if cr == 'oui' : self.cr.fatal('Impossible d affecter un type au résultat')
+ if cr == 'oui' :
+ l=traceback.format_exception(sys.exc_info()[0],
+ sys.exc_info()[1],
+ sys.exc_info()[2])
+ self.cr.fatal('Impossible d affecter un type au résultat\n'+string.join(l[2:]))
return 0
# on teste maintenant si la SD est r\351utilis\351e ou s'il faut la cr\351er
+ valid=1
if self.reuse:
+ # Un concept reutilise a ete specifie
if AsType(self.reuse) != sd_prod:
if cr == 'oui' : self.cr.fatal('Type de concept reutilise incompatible avec type produit')
- return 0
- self.sd=self.reuse
- return 1
+ valid=0
+ if self.sdnom[0] != '_' and self.reuse.nom != self.sdnom:
+ # Le nom de la variable de retour (self.sdnom) doit etre le meme que celui du concept reutilise (self.reuse.nom)
+ if cr == 'oui' :
+ self.cr.fatal('Concept reutilise : le nom de la variable de retour devrait etre %s et non %s' %(self.reuse.nom,self.sdnom))
+ valid= 0
+ if valid:self.sd=self.reuse
else:
if sd_prod == None:# Pas de concept retourné
# Que faut il faire de l eventuel ancien sd ?
# Le sd n existait pas , on ne le crée pas
self.typret=sd_prod
if cr == 'oui' : self.cr.fatal("Concept retourné non défini")
- return 0
+ valid=0
if self.definition.reentrant == 'o':
- self.reuse = self.sd
- return 1
+ if cr == 'oui' : self.cr.fatal('Commande obligatoirement reentrante : specifier reuse=concept')
+ valid=0
+ #self.reuse = self.sd
+ return valid
def report(self):
"""
+#@ MODIF V_MCBLOC Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin MCBLOC qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type MCBLOC
+#@ MODIF V_MCCOMPO Validation DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe de base MCCOMPO qui sert à factoriser
les traitements des objets composites de type OBJECT
self.cr=self.CR()
self.cr.debut = self.txt_nat+self.nom
self.cr.fin = "Fin "+self.txt_nat+self.nom
+ for child in self.mc_liste:
+ self.cr.add(child.report())
self.state = 'modified'
try:
self.isvalid(cr='oui')
except AsException,e:
if CONTEXT.debug : traceback.print_exc()
self.cr.fatal(string.join((self.txt_nat,self.nom,str(e))))
- for child in self.mc_liste:
- self.cr.add(child.report())
return self.cr
def verif_regles(self):
+#@ MODIF V_MCFACT Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin MCFACT qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type MCFACT
+#@ MODIF V_MCLIST Validation DATE 29/05/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin MCList qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type MCList
num = num+1
if not i.isvalid():
if cr=='oui':
- self.cr.fatal(string.join(["L'occurrence n°",`num`," du mot-clé facteur :",self.nom," n'est pas valide"]))
+ self.cr.fatal(string.join(["L'occurrence n",`num`," du mot-clé facteur :",self.nom," n'est pas valide"]))
test = 0
return test
"""
self.cr=self.CR( debut = "Mot-clé facteur multiple : "+self.nom,
fin = "Fin Mot-clé facteur multiple : "+self.nom)
+ for i in self.data:
+ self.cr.add(i.report())
# XXX j'ai mis l'état en commentaire car il n'est utilisé ensuite
#self.state = 'modified'
try :
except AsException,e:
if CONTEXT.debug : traceback.print_exc()
self.cr.fatal(string.join(["Mot-clé facteur multiple : ",self.nom,str(e)]))
- for i in self.data:
- self.cr.add(i.report())
return self.cr
+#@ MODIF V_MCSIMP Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin MCSIMP qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type MCSIMP
def verif_card(self,cr='non'):
"""
- un mot-clé simple ne peut être répété :
- la cardinalité ici s'entend par la vérification que le nombre d'arguments de self.valeur
- est bien compris entre self.min et self.max dans le cas où il s'agit d'une liste
+ un mot-clé simple ne peut etre répété :
+ la cardinalité ici s'entend par la vérification que le nombre d'arguments de self.valeur
+ est bien compris entre self.min et self.max dans le cas où il s'agit d'une liste
"""
card = 1
min=self.definition.min
max=self.definition.max
if type(self.valeur) in (types.ListType,types.TupleType) and 'C' not in self.definition.type :
- if len(self.valeur) < min or len(self.valeur)>max:
+ if len(self.valeur) < min or len(self.valeur)>max:
if cr == 'oui':
self.cr.fatal("Nombre d'arguments %s incorrects pour %s (min = %s, max = %s)" %(`self.valeur`,self.nom,min,max))
card = 0
else:
- if self.valeur == None :
+ if self.valeur == None :
if min >= 1 :
# on n'a pas d'objet et on en attend au moins un
card=0
- else :
+ else :
if min > 1:
# on n'a qu'un objet et on en attend plus d'1
card = 0
"""
if val != None:
- valeur = val
+ valeur = val
else:
- valeur = self.valeur
+ valeur = self.valeur
if valeur == None :
- if cr == 'oui':
+ if cr == 'oui':
self.cr.fatal("None n'est pas une valeur autorisée")
- return 0
+ return 0
if type(valeur) == types.TupleType:
- # on peut avoir à faire à un complexe ou une liste de valeurs ...
- if self.is_complexe(valeur) : return 1
- else:
+ # on peut avoir à faire à un complexe ou une liste de valeurs ...
+ if self.is_complexe(valeur) : return 1
+ else:
for val in valeur:
if not self.verif_type(val=val,cr=cr) : return 0
return 1
if not self.verif_type(val=val,cr=cr) : return 0
return 1
else:
- # on n'a pas de tuple ...il faut tester sur tous les types ou les valeurs possibles
+ # on n'a pas de tuple ...il faut tester sur tous les types ou les valeurs possibles
# XXX Pourquoi into est il traité ici et pas seulement dans verif_into ???
- if self.definition.into != None :
+ if self.definition.into != None :
try:
if valeur in self.definition.into :
return 1
else:
if cr == 'oui':
- self.cr.fatal("%s n'est pas une valeur autorisée" %valeur)
+ self.cr.fatal("%s n'est pas une valeur autorisée" %valeur)
return 0
except:
print "problème avec :",self.nom
print 'valeur =',valeur
return 0
- for type_permis in self.definition.type:
+ for type_permis in self.definition.type:
if self.compare_type(valeur,type_permis) : return 1
- # si on sort de la boucle précédente par ici c'est que l'on n'a trouvé aucun type valable --> valeur refusée
- if cr =='oui':
+ # si on sort de la boucle précédente par ici c'est que l'on n'a trouvé aucun type valable --> valeur refusée
+ if cr =='oui':
self.cr.fatal("%s n'est pas d'un type autorisé" %`valeur`)
- return 0
+ return 0
def verif_into(self,cr='non'):
"""
entre val_min et val_max
"""
if self.definition.into == None :
- #on est dans le cas d'un ensemble continu de valeurs possibles (intervalle)
- if type(self.valeur)==types.TupleType :
+ #on est dans le cas d'un ensemble continu de valeurs possibles (intervalle)
+ if type(self.valeur)==types.TupleType :
test = 1
for val in self.valeur :
if type(val)!=types.StringType and type(val)!=types.InstanceType:
test = test*self.isinintervalle(val,cr=cr)
return test
- else :
+ else :
val = self.valeur
if type(val)!=types.StringType and type(val)!=types.InstanceType:
return self.isinintervalle(self.valeur,cr=cr)
else :
return 1
else :
- # on est dans le cas d'un ensemble discret de valeurs possibles (into)
- if type(self.valeur) == types.TupleType :
+ # on est dans le cas d'un ensemble discret de valeurs possibles (into)
+ if type(self.valeur) == types.TupleType :
for e in self.valeur:
if e not in self.definition.into:
if cr=='oui':
- self.cr.fatal(string.join(("La valeur :",`e`," n'est pas permise pour le mot-clé :",self.nom)))
+ self.cr.fatal(string.join(("La valeur :",`e`," n'est pas permise pour le mot-clé :",self.nom)))
return 0
- else:
+ else:
if self.valeur == None or self.valeur not in self.definition.into:
if cr=='oui':
self.cr.fatal(string.join(("La valeur :",`self.valeur`," n'est pas permise pour le mot-clé :",self.nom)))
return 0
- return 1
+ return 1
def is_complexe(self,valeur):
""" Retourne 1 si valeur est un complexe, 0 sinon """
if type(valeur) == types.StringType :
- # on teste une valeur issue d'une entry (valeur saisie depuis EFICAS)
+ # on teste une valeur issue d'une entry (valeur saisie depuis EFICAS)
#XXX Il serait peut etre plus judicieux d'appeler une méthode de self.jdc
#XXX qui retournerait l'objet résultat de l'évaluation
#XXX ou meme de faire cette evaluation a l'exterieur de cette classe ??
if not self.jdc :return 0
- try :
+ try :
valeur = eval(valeur,self.jdc.g_context)
- except:
+ except:
return 0
if type(valeur) == types.InstanceType :
#XXX je n'y touche pas pour ne pas tout casser mais il serait
#XXX préférable d'appeler une méthode de valeur : return valeur.is_type('C'), par exemple
- if valeur.__class__.__name__ in ('EVAL','complexe'):
+ if valeur.__class__.__name__ in ('EVAL','complexe'):
return 1
- elif valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+ elif valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
# il faut tester si la valeur du parametre est un entier
#XXX ne serait ce pas plutot complexe ???? sinon expliquer
return self.is_entier(valeur.valeur)
- else:
+ else:
print "Objet non reconnu dans is_complexe %s" %`valeur`
return 0
elif type(valeur) != types.TupleType :
- return 0
+ return 0
else:
- if len(valeur) != 3 :
+ if len(valeur) != 3 :
return 0
- else:
+ else:
if type(valeur[0]) != types.StringType : return 0
if string.strip(valeur[0]) not in ('RI','MP'):
return 0
Retourne 1 si valeur est un reel, 0 sinon
"""
if type(valeur) == types.StringType :
- # on teste une valeur issue d'une entry (valeur saisie depuis EFICAS)
+ # on teste une valeur issue d'une entry (valeur saisie depuis EFICAS)
if not self.jdc :return 0
- try :
+ try :
valeur = eval(valeur,self.jdc.g_context)
- except:
+ except:
return 0
if type(valeur) == types.InstanceType :
#XXX je n'y touche pas pour ne pas tout casser mais il serait
#XXX préférable d'appeler une méthode de valeur : return valeur.is_type('R'), par exemple
#XXX ou valeur.is_reel()
#XXX ou encore valeur.compare(self.is_reel)
- if valeur.__class__.__name__ in ('EVAL','reel') :
+ if valeur.__class__.__name__ in ('EVAL','reel') :
return 1
- elif valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+ elif valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
# il faut tester si la valeur du parametre est un réel
return self.is_reel(valeur.valeur)
- else:
+ else:
print "Objet non reconnu dans is_reel %s" %`valeur`
return 0
elif type(valeur) not in (types.IntType,types.FloatType,types.LongType):
- # ce n'est pas un réel
- return 0
+ # ce n'est pas un réel
+ return 0
else:
- return 1
+ return 1
def is_entier(self,valeur):
""" Retourne 1 si valeur est un entier, 0 sinon """
if type(valeur) == types.StringType :
- # on teste une valeur issue d'une entry (valeur saisie depuis EFICAS)
+ # on teste une valeur issue d'une entry (valeur saisie depuis EFICAS)
if not self.jdc :return 0
- try :
+ try :
valeur = eval(valeur,self.jdc.g_context)
- except:
+ except:
return 0
if type(valeur) == types.InstanceType :
#XXX je n'y touche pas pour ne pas tout casser mais il serait
#XXX préférable d'appeler une méthode de valeur : return valeur.is_type('I'), par exemple
- if valeur.__class__.__name__ in ('EVAL','entier') :
+ if valeur.__class__.__name__ in ('EVAL','entier') :
return 1
- elif valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+ elif valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
# il faut tester si la valeur du parametre est un entier
return self.is_entier(valeur.valeur)
- else:
+ else:
print "Objet non reconnu dans is_reel %s" %`valeur`
return 0
elif type(valeur) not in (types.IntType,types.LongType):
- # ce n'est pas un entier
- return 0
+ # ce n'est pas un entier
+ return 0
else:
- return 1
-
+ return 1
+
def is_shell(self,valeur):
"""
Retourne 1 si valeur est un shell, 0 sinon
On impose juste que valeur soit une string
"""
if type(valeur) != types.StringType:
- return 0
+ return 0
else:
- return 1
+ return 1
def is_object_from(self,objet,classe):
"""
0 sinon
"""
if type(objet) != types.InstanceType :
- if type(objet) == types.StringType:
+ if type(objet) == types.StringType:
if not self.jdc :return 0
try :
objet = eval(objet,self.jdc.g_context)
if type(objet) != types.InstanceType : return 0
except:
return 0
- else:
+ else:
return 0
if not objet.__class__ == classe and not issubclass(objet.__class__,classe):
- return 0
+ return 0
else:
- return 1
+ return 1
def compare_type(self,valeur,type_permis):
"""
Fonction booléenne qui retourne 1 si valeur est du type type_permis, 0 sinon
"""
if type(valeur) == types.InstanceType and valeur.__class__.__name__ == 'PARAMETRE':
- if type(valeur.valeur) == types.TupleType :
+ if type(valeur.valeur) == types.TupleType :
# on a à faire à un PARAMETRE qui définit une liste d'items
# --> on teste sur la première car on n'accepte que les liste homogènes
valeur = valeur.valeur[0]
if type_permis == 'R':
- return self.is_reel(valeur)
+ return self.is_reel(valeur)
elif type_permis == 'I':
- return self.is_entier(valeur)
+ return self.is_entier(valeur)
elif type_permis == 'C':
- return self.is_complexe(valeur)
+ return self.is_complexe(valeur)
elif type_permis == 'shell':
- return self.is_shell(valeur)
+ return self.is_shell(valeur)
elif type_permis == 'TXM':
- if type(valeur) != types.InstanceType:
+ if type(valeur) != types.InstanceType:
return type(valeur)==types.StringType
- else:
+ else:
#XXX je n'y touche pas pour ne pas tout casser mais il serait
#XXX préférable d'appeler une méthode de valeur : return valeur.is_type('TXM'), par exemple
if valeur.__class__.__name__ == 'chaine' :
else:
return 0
elif type(type_permis) == types.ClassType:
- # on ne teste pas certains objets de type GEOM , assd, ...
+ # on ne teste pas certains objets de type GEOM , assd, ...
# On appelle la méthode de classe is_object de type_permis.
# Comme valeur peut etre de n'importe quel type on utilise la fonction (is_object.im_func)
# et non pas la methode (is_object) ce qui risquerait de provoquer des erreurs
if type_permis.is_object.im_func(valeur):
return 1
- else :
+ else :
return self.is_object_from(valeur,type_permis)
else:
- print "Type non encore géré %s" %`type_permis`
- print self.nom,self.parent.nom,self.jdc.fichier
+ print "Type non encore géré %s" %`type_permis`
+ print self.nom,self.parent.nom,self.jdc.fichier
def isinintervalle(self,valeur,cr='non'):
"""
le domaine de définition donné dans le catalogue, 0 sinon.
"""
if type(valeur) not in (types.IntType,types.FloatType,types.LongType) :
- return 1
+ return 1
else :
- min = self.definition.val_min
- max = self.definition.val_max
- if min == '**': min = valeur -1
- if max == '**': max = valeur +1
- if valeur < min or valeur > max :
+ min = self.definition.val_min
+ max = self.definition.val_max
+ if min == '**': min = valeur -1
+ if max == '**': max = valeur +1
+ if valeur < min or valeur > max :
if cr=='oui':
self.cr.fatal(string.join(("La valeur :",`valeur`," du mot-clé ",self.nom,\
" est en dehors du domaine de validité [",`min`,",",`max`,"]")))
return 0
- else :
+ else :
return 1
def init_modif_up(self):
"""
Propage l'état modifié au parent s'il existe et n'est l'objet
- lui-meme
+ lui-meme
"""
if self.parent and self.parent != self :
- self.parent.state = 'modified'
+ self.parent.state = 'modified'
def report(self):
""" génère le rapport de validation de self """
self.cr.fin = "Fin Mot-clé simple : "+self.nom
self.state = 'modified'
try:
- self.isvalid(cr='oui')
+ self.isvalid(cr='oui')
except AsException,e:
- if CONTEXT.debug : traceback.print_exc()
- self.cr.fatal(string.join(("Mot-clé simple : ",self.nom,str(e))))
+ if CONTEXT.debug : traceback.print_exc()
+ self.cr.fatal(string.join(("Mot-clé simple : ",self.nom,str(e))))
return self.cr
+#@ MODIF V_PRESENT_ABSENT Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
class PRESENT_ABSENT:
"""
+#@ MODIF V_PRESENT_PRESENT Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
class PRESENT_PRESENT:
"""
+#@ MODIF V_PROC_ETAPE Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce module contient la classe mixin PROC_ETAPE qui porte les méthodes
nécessaires pour réaliser la validation d'un objet de type PROC_ETAPE
+#@ MODIF V_UN_PARMI Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
class UN_PARMI:
"""
+#@ MODIF __init__ Validation DATE 27/03/2002 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
"""
Ce package contient la fonctionnalité de validation des objets de type OBJECT.
Cette fonctionnalité est implémentée sous la forme de classes de type MIXIN qui