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))
#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 :