-#@ MODIF asojb Noyau DATE 04/06/2007 AUTEUR COURTOIS M.COURTOIS
# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007 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.
-# ======================================================================
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
"""
Description des OJB jeveux
"""
-from basetype import Type, MetaType
+from basetype import Type
from asnom import SDNom
from ascheckers import CheckLog
import traceback,sys
# pour utilisation dans eficas
try:
import aster
- from Utilitai.Utmess import U2MESS as UTMESS
+ from Utilitai.Utmess import UTMESS
except:
pass
if checker is None:
checker = CheckLog()
+ # vérif déjà faite ? (en tenant compte du type)
+ if checker.checkedAsBase(self):
+ return checker
+ checker.visitAsBase( self )
+
# vérifie les enfants :
optional = checker.optional
checker.optional = checker.optional or self.optional
try :
v( checker )
except :
- UTMESS("E", 'SDVERI_45')
- print 40*'-'
- traceback.print_exc(file=sys.stdout)
+ mess=60*'-'+'\n'
+ mess=mess+'Erreur SDVERI (Attention : vérification incomplète)'+'\n'
+ mess=mess.join(traceback.format_tb(sys.exc_traceback))
+ checker.err(self,mess)
checker.optional = optional
return checker
l.append( indent + line )
return "\n".join( l )
- def __repr__(self):
+ def short_repr(self):
return "<%s(%x,%r)>" % (self.__class__.__name__, id(self), self.nomj() )
+ def long_repr(self):
+ if not hasattr(self, "accessible") or not self.accessible():
+ # hors Aster ou en par_lot='oui'
+ return self.short_repr()
+ else:
+ from Cata.cata import IMPR_CO, _F
+ IMPR_CO(CONCEPT=_F(NOM=self.nom), UNITE=6)
+ return ''
+
+ def __repr__(self):
+ # par défaut, on fait court !
+ return self.short_repr()
+
# -----------------------------------------------------------------------------
class JeveuxAttr(object):
def __get__(self, obj, klass):
if obj is None:
return self
- return aster.jeveux_getattr( obj.nomj(), self.name )[0]
+ nomj = obj.nomj()
+ if aster.jeveux_exists( nomj ):
+ return aster.jeveux_getattr( nomj, self.name )[0]
+ else :
+ return None
# -----------------------------------------------------------------------------
class JeveuxStrAttr(JeveuxAttr):
def __get__(self, obj, klass):
if obj is None:
return self
- return aster.jeveux_getattr( obj.nomj(), self.name )[1].strip()
+ nomj = obj.nomj()
+ if aster.jeveux_exists( nomj ):
+ return aster.jeveux_getattr( nomj, self.name )[1].strip()
+ else :
+ return None
# -----------------------------------------------------------------------------
class OJB(AsBase):
"""Fonction utilitaire, renvoie une liste de chaines 'strippées'"""
data = self.get()
if data is not None:
- return [ x.strip() for x in self.get() ]
+ return [ x.strip() for x in data ]
else:
return []
- def foreachattr(self, callable, *args, **kwargs):
+ def foreachattr(self, callback, *args, **kwargs):
klass = self.__class__
for k in dir(klass):
v = getattr( klass, k )
if isinstance(v, JeveuxAttr):
- callable( k, v, *args, **kwargs )
+ callback( k, v, *args, **kwargs )
def check(self, checker=None):
if checker is None:
checker = CheckLog()
# l'objet a déjà été vérifié, on ne fait rien
- if self.nomj() in checker.names.keys():
- return checker
- checker.visit( self )
+ if checker.checkedOJB(self):
+ return checker
+ checker.visitOJB( self )
if self.exists:
self.foreachattr( lambda k,v,obj,c: v.check(k, obj, c),
self, checker )
class OJBVect(OJB):
lonmax = JeveuxIntAttr("LONMAX")
lonuti = JeveuxIntAttr("LONUTI")
+ _xous = "S"
+ _genr = "V"
+
+# -----------------------------------------------------------------------------
+class OJBPtnom(OJB):
+ nommax = JeveuxIntAttr("NOMMAX")
+ nomuti = JeveuxIntAttr("NOMUTI")
+ _xous = "S"
+ _genr = "N"
+ _type = "K"
# -----------------------------------------------------------------------------
class OJBCollec(OJB):
class AsVI(OJBVect):
_type = "I"
+# -----------------------------------------------------------------------------
+class AsVS(OJBVect):
+ _type = "S"
+
# -----------------------------------------------------------------------------
class AsVR(OJBVect):
_type = "R"
_ltyp = 80
# Pour compatibilite
-AsColl = OJBCollec
AsObject = OJB
+AsColl = OJBCollec
+AsPn = OJBPtnom
+AsVect = OJBVect