From cee635b3002d224afc264b32865c07ba34a75abe Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Wed, 27 Jun 2018 11:40:39 +0200 Subject: [PATCH] pour sauvegarde seulement --- Efi2Xsd/MCAccasXsd.py | 139 ++++++++++++++++++++++++++---------------- 1 file changed, 86 insertions(+), 53 deletions(-) diff --git a/Efi2Xsd/MCAccasXsd.py b/Efi2Xsd/MCAccasXsd.py index 9026b70e..03ee55eb 100755 --- a/Efi2Xsd/MCAccasXsd.py +++ b/Efi2Xsd/MCAccasXsd.py @@ -21,14 +21,17 @@ class X_MCSIMP: # self.valeur tient compte de la valeur par defaut # utiliser getValeur ? expression numpy if not self.cata.modeleMetier : return + if CONTEXT.fromXML : return #print ('X_MCSIMP buildObjPyxb', self.nom, self,self.valeur) self.monNomClasseModeleMetier='T_'+self.nom self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier) #print (self.maClasseModeleMetier) - #print (self.valeur) + print (self.valeur) + print (type(self.valeur)) if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur) elif self.definition.into != None and 'TXM' in self.definition.type : self.objPyxb = None else : self.objPyxb=self.maClasseModeleMetier() + self.filsPyxb=None #print ('fin X_MCSIMP', self.objPyxb, self.nom,self) @@ -99,27 +102,33 @@ class X_MCCOMPO: # def buildObjPyxb(self,mc_list) : if not self.cata.modeleMetier : return - #print ('_______________________________________') - #print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list) + if CONTEXT.fromXML : return + print ('_______________________________________') + print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list) self.monNomClasseModeleMetier='T_'+self.nom self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier) listArg=[] for objAccas in mc_list : # on remonte les mots-clefs des blocs #print (type (objAccas)) - if type (objAccas.objPyxb) == list : - for fils in objAccas.objPyxb : - listArg.append(fils.objPyxb) + if objAccas.nature == 'MCBLOC' : + # Attention --> mc_list et mc_liste + for fils in objAccas.mc_liste: fils.perePyxb=self + listArg.append(fils.objPyxb) print (fils.nom ,' a pour pere Pyxb', self, self.nom) + elif objAccas.nature == 'MCList' : + for fils in objAccas : + fils.perePyxb=self + listArg.append(fils.objPyxb) else : listArg.append(objAccas.objPyxb) objAccas.perePyxb=self - print (objAccas.nom ,' a pour pere Pyxb', self, self.nom) + #print (objAccas.nom ,' a pour pere Pyxb', self, self.nom) #print ( objAccas.nom, ' a pour perepyxb ' , objAccas.perePyxb.nom) self.objPyxb=self.maClasseModeleMetier(*listArg) - #print ('Fin ', self.nom, self.objPyxb) - #print ('_______________________________________') + print ('Fin ', self.nom, self.objPyxb) + print ('_______________________________________') def deletePyxbObject(self): print ('******************************************') @@ -135,18 +144,21 @@ class X_MCCOMPO: class X_MCBLOC (X_MCCOMPO): # -------------------------- def buildObjPyxb(self,mc_list): + if CONTEXT.fromXML : return if not self.cata.modeleMetier : return + # mise a none ? le bloc n a pas d existence en pyxb self.perePyxb=None - #print ('_______________________________________') + print ('_______________________________________') print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list) - import traceback - #traceback.print_stack() - # il faut attacher les objets au pere - self.objPyxb=[] + # on rattache ses fils au bloc mais leur pere sera ensuite le MCCOMPO qui contient le bloc + # Pas sur d en avoir besoin + self.filsPyxb=[] + self.objPyxb=None for objAccas in mc_list : - self.objPyxb.append(objAccas) - #print ('Fin ', self.nom, self.objPyxb) - #print ('_______________________________________') + self.filsPyxb.append(objAccas.objPyxb) + print (self.filsPyxb) + print ('Fin ', self.nom, self.objPyxb) + print ('_______________________________________') @@ -155,46 +167,54 @@ class X_MCLIST (X_MCCOMPO): # -------------------------- def buildObjPyxb(self,mc_list): - #print ('_______________________________________') - #print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self) - if not self.cata.modeleMetier : return - self.monNomClasseModeleMetier='T_'+self.nom - self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier) - listArg=[] + print ('_______________________________________') + print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self) + print ('on ne fait rien') + print ('_______________________________________') + pass + + #def build2ObjPyxb(self,mc_list): + # if CONTEXT.fromXML : return + # print ('_______________________________________') + # print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self) + # if not self.cata.modeleMetier : return + # self.monNomClasseModeleMetier='T_'+self.nom + # self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier) + # listArg=[] # MCList est une liste - for nbDeSequence in self : - for objAccas in nbDeSequence.mc_liste : + # for nbDeSequence in self : + # for objAccas in nbDeSequence.mc_liste : #print (type (objAccas)) #print (objAccas.nom, objAccas.objPyxb, type(objAccas.objPyxb)) #print ( type (objAccas.objPyxb) == list ) if type (objAccas.objPyxb) == list : #print ('ds le if') - for fils in objAccas.objPyxb : - listArg.append(fils.objPyxb) - fils.perePyxb=self - print (fils.nom ,' a pour pere Pyxb', self, self.nom) - else : - listArg.append(objAccas.objPyxb) - objAccas.perePyxb=self - print (objAccas.nom ,' a pour pere Pyxb', self, self.nom) + # for fils in objAccas.objPyxb : + # listArg.append(fils.objPyxb) + # fils.perePyxb=self + #print (fils.nom ,' a pour pere Pyxb', self, self.nom) + # else : + # listArg.append(objAccas.objPyxb) + # objAccas.perePyxb=self + #print (objAccas.nom ,' a pour pere Pyxb', self, self.nom) #listArg.append(objAccas.objPyxb) #objAccas.perePyxb=self #print ( objAccas.nom, ' a pour perepyxb ' , objAccas.perePyxb.nom) - #print ('X_MCLIST', self.nom, self, listArg) - self.objPyxb=self.maClasseModeleMetier(*listArg) - print ('fin buildObjPyxb traite ds X_MCLIST', self.nom, self, self.objPyxb) - print ('_______________________________________') + # print ('X_MCLIST', self.nom, self, listArg) + # self.objPyxb=self.maClasseModeleMetier(*listArg) + # print ('fin buildObjPyxb traite ds X_MCLIST', self.nom, self, self.objPyxb) + # print ('_______________________________________') class X_MCFACT (X_MCCOMPO): # ------------------------- # on gere au niveau du MCLIST - - def buildObjPyxb(self,mc_list): - #print ('_______________________________________') - #print ('X_MCFACT buildObjPyxb debut et fin', self.nom, self) - #print ('_______________________________________') pass + + #def build2ObjPyxb(self,mc_list): + # print ('_______________________________________') + # print ('X_MCFACT buildObjPyxb debut et fin', self.nom, self) + # print ('_______________________________________') class X_JDC (X_MCCOMPO): @@ -203,7 +223,6 @@ class X_JDC (X_MCCOMPO): def __init__(self): #print ('_______________________________________') #print ('X_JDC buildObjPyxb', self) - self.source=None if not self.cata.modeleMetier : return self.monNomClasseModeleMetier=self.code self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier) @@ -217,13 +236,13 @@ class X_JDC (X_MCCOMPO): # OK seulement si sequence (choice ? ...) print ('ds enregistreEtapePyxb', etape.nom) if not self.cata.modeleMetier : return - if self.source== "xml" : return + #if self.source== "xml" : return self.objPyxb.append(etape.objPyxb) etape.perePyxb = self #self.toXml() def toXml(self): - if not self.cata.modeleMetier : return + #if not self.cata.modeleMetier : return print(self.objPyxb.toDOM().toprettyxml()) print(self.objPyxb.toxml()) @@ -235,29 +254,43 @@ class X_JDC (X_MCCOMPO): self.objPyxb=self.cata.modeleMetier.CreateFromDocument(self.procedure) for objEtape in self.objPyxb.content(): print ('analyse de ', objEtape) - dictArgs= (self.pyxbToDict(objEtape)) - #objEtape.monNomClasseAccas=objEtape.monNomClasseModeleMetier[2:-2] - #maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas) + objEtape.dictArgs= (self.pyxbToDict(objEtape)) + objEtape.monNomClasseAccas=objEtape._ExpandedName.localName() + print (objEtape.monNomClasseAccas, type(objEtape.monNomClasseAccas)) + print (objEtape._ExpandedName, type(objEtape._ExpandedName)) + objEtape.monNomClasseAccas=objEtape.monNomClasseAccas[2:] + #print (objEtape) + #print (objEtape.monNomClasseAccas) + maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas) + print ( '________________') + print (objEtape , type(objEtape)) + #print (dir(objEtape)) print (objEtape.dictArgs) print ( '________________') - #objAccasEtape=maClasseAccas(**(objEtape.dictArgs)) + objAccasEtape=maClasseAccas(**(objEtape.dictArgs)) self.source='None' def pyxbToDict(self,objAAnalyser): + # la transformation de l objAAnalyser 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 dictArgs = {} if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition): - if isinstance(objAAnalyser, types.StringTypes): return pyxb.utils.utility.QuotedEscaped(objAAnalyser,) + if isinstance(objAAnalyser, pyxb.binding.basis.enumeration_mixin): return str(objAAnalyser) + 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,) if isinstance(objAAnalyser, (types.NoneType, types.BooleanType, types.FloatType, types.IntType, types.LongType)): return repr(objAAnalyser) + #if isinstance(objAAnalyser, types.StringTypes): return pyxb.utils.utility.QuotedEscaped(objAAnalyser,) #pour une enum getattr(value dans le type) # return pythonLiteral(ReferenceFacet(facet=value, **kw)) return objAAnalyser for expandedName, elementDeclaration in objAAnalyser._ElementMap.items(): objPyxbName = expandedName.localName() objPyxbValue = getattr(objAAnalyser, objPyxbName) - print (objPyxbName,objPyxbValue) if objPyxbValue == None or objPyxbValue == [] : continue if elementDeclaration.isPlural(): dictArgs[objPyxbName] = [] @@ -265,9 +298,9 @@ class X_JDC (X_MCCOMPO): else: dictArgs[objPyxbName] = self.pyxbToDict(getattr(objAAnalyser, objPyxbName)) print ("***********************************") - print (objAAnalyser) + print ('pyxbToDict ', objAAnalyser) print (dictArgs) - for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i])) + #for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i])) print ("***********************************") return dictArgs -- 2.39.2