From: pascale.noyret Date: Fri, 21 May 2021 13:19:53 +0000 (+0200) Subject: lecture des UserASSDs X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=eb19dca9aa26ec3ef5ce0f0a378d1c1d5ec8ae38;p=tools%2Feficas.git lecture des UserASSDs --- diff --git a/Efi2Xsd/MCAccasXML.py b/Efi2Xsd/MCAccasXML.py index 548c24d4..23149b1f 100755 --- a/Efi2Xsd/MCAccasXML.py +++ b/Efi2Xsd/MCAccasXML.py @@ -525,42 +525,46 @@ class X_JDC (X_MCCOMPO): if debug : print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh') - def pyxbToDict(self,objAAnalyser, debug=False): + def pyxbToDict(self,objAAnalyser, debug=True): # la transformation de l objAAnalyser en type lu par eficas ne fonctionne pas pour tout - # faudrait - il travailler sur les types des objets ? - # c est a revoir -> fonction cast a prevoir ds les 2 sens if objAAnalyser is None: return if debug : print ('debut pour_____________________________ ',objAAnalyser) dictArgs = {} # traitement SIMP # --------------- + # a revoir pour les matrices + # et les tuples + debug = 1 if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition): - if debug : print ('je suis un MCSimple') + if debug : print ('je suis un MCSimple', objAAnalyser) # traitement scalaire objAAnalyser.dictPyxb=objAAnalyser if not (isinstance(objAAnalyser,pyxb.binding.basis.STD_list)): - # print ('je suis un scalaire') - #try : # python 3 - if isinstance(objAAnalyser,self.cata.modeleMetier.AccasUserAssd): - import inspect - laClassePyxbUserAssd=inspect.getmro(objAAnalyser.__class__)[1] + if debug : print ('je suis un scalaire') + if isinstance(objAAnalyser,self.cata.modeleMetier.AccasUserAssd) or isinstance(objAAnalyser,self.cata.modeleMetier.AccasUserAssdMultiple): + if debug : print ('je suis un UserASSD') + laClassePyxbUserAssd=type(objAAnalyser) return self.creeUserAssd(objAAnalyser,laClassePyxbUserAssd) if isinstance(objAAnalyser, pyxb.binding.datatypes.boolean) : return bool(objAAnalyser) if isinstance(objAAnalyser, str) : return str(objAAnalyser) if isinstance(objAAnalyser, int) : return int(objAAnalyser) if isinstance(objAAnalyser, float): return float(objAAnalyser) if isinstance(objAAnalyser, pyxb.binding.basis.enumeration_mixin): return str(objAAnalyser) - #except : # python 2 - #if isinstance(objAAnalyser, types.StringTypes): return str(objAAnalyser) - #if isinstance(objAAnalyser, types.FloatType): return float(objAAnalyser) - #if isinstance(objAAnalyser, (types.IntType, types.LongType)): return int(objAAnalyser) - #print ('________ fin pour ', objAAnalyser, 'retour', repr(objAAnalyser)) return objAAnalyser else : - #print ('je suis une liste') + if debug : print ('je suis une liste') laListe=[] + # liste homogene + if len(objAAnalyser)>0: + if issubclass(objAAnalyser[0].__class__,self.cata.modeleMetier.AccasUserAssd) or issubclass(objAAnalyser[0].__class__,self.cata.modeleMetier.AccasUserAssdMultiple): estUnUserASSDorUserASSDMultiple = True + else : estUnUserASSDorUserASSDMultiple=False + else : estUnUserASSDorUserASSDMultiple=False + if debug : print ('estUnUserASSDorUserASSDMultiple', estUnUserASSDorUserASSDMultiple) for obj in objAAnalyser : - if isinstance(obj, str): laListe.append (str(obj)) + if estUnUserASSDorUserASSDMultiple: + laClassePyxbUserAssd=obj.__class__ + laListe.append(self.creeUserAssd(obj,laClassePyxbUserAssd)) + elif isinstance(obj, str): laListe.append (str(obj)) elif isinstance(obj, int): laListe.append (int(obj)) elif isinstance(obj, float): laListe.append (float(obj)) elif isinstance(obj, pyxb.binding.basis.enumeration_mixin): laListe.append(str(obj)) @@ -607,13 +611,19 @@ class X_JDC (X_MCCOMPO): #print ('fin pour ',objAAnalyser) return dictArgs - def creeUserAssd(self,objAAnalyser,laClassePyxbUserAssd): + def creeUserAssd(self,objAAnalyser,laClassePyxbUserAssd,debug=True): - nomClasseAccasUserAssd=laClassePyxbUserAssd.__name__[:-2] enCreation=False - if laClassePyxbUserAssd.__name__[-2:]== '_C' : enCreation = True - elif laClassePyxbUserAssd.__name__[-2:] != '_U' : print ('pb avec', laClassePyxbUserAssd); exit() + if debug : print ('creeUserAssd ', objAAnalyser, ' ',laClassePyxbUserAssd) + leTypeIntermediaire=laClassePyxbUserAssd.XsdSuperType() + if debug : print ('leTypeIntermediaire ', leTypeIntermediaire) + if debug : print ('leTypeIntermediaire ', leTypeIntermediaire.XsdSuperType()) + if leTypeIntermediaire.__name__[-2:]== '_C' : enCreation = True + elif leTypeIntermediaire.__name__[-2:] != '_U' : print ('pb avec', laClassePyxbUserAssd); return None #exit() + nomClasseAccasUserAssd=leTypeIntermediaire.XsdSuperType().__name__ + if debug : print ('nomClasseAccasUserAssd', nomClasseAccasUserAssd) laClasseAccas=getattr(self.cata,nomClasseAccasUserAssd) + print (laClasseAccas) if not(enCreation): if str(objAAnalyser) in self.g_context.keys():return self.g_context[str(objAAnalyser)] else :