if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur)
else : self.objPyxb=self.maClasseModeleMetier(_validate_constraints=False);
- if self.objPyxb : self.objPyxb.objAccas=self
+ if self.objPyxb !=None : self.objPyxb.objAccas=self
#print ('X_MCSIMP', self.nom, self.objPyxb, )
- #print ('fin X_MCSIMP', self.objPyxb, self.nom,self, self.maClasseModeleMetier,self.valeur)
+ print ('fin X_MCSIMP', self.objPyxb, self.nom, self, self.maClasseModeleMetier,self.valeur)
def setValeurObjPyxb(self,newVal):
# -------------------------
#
def buildObjPyxb(self,mc_list) :
- print ('________________________________________________')
+ #print ('________________________________________________')
if not self.cata.modeleMetier : return
- print ('X_MCCOMPO buildObjPyxb', self, mc_list)
+ #print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
self.listArg=[]
- dicoargs={}
+ self.dicoArg={}
for objAccas in mc_list :
+ #print (objAccas.nom,objAccas.nature)
if objAccas.nature == 'MCBLOC' :
self.exploreBLOC(objAccas)
elif objAccas.nature == 'MCList' :
- for fils in objAccas :
- # print (fils.nom)
- # print (fils.objPyxb,fils.maClasseModeleMetier)
- fils.perePyxb=self
- self.listArg.append(fils.objPyxb)
- dicoargs[fils.nom]=fils.objPyxb
+ #print ('MCList explore', objAccas.nom, len(objAccas), objAccas[0].definition.max )
+ if objAccas[0].definition.max > 1 :
+ self.listArg.append(objAccas) # les MCList n ont pas objPyxb
+ self.dicoArg[objAccas.nom]=[]
+ for fils in objAccas :
+ fils.perePyxb=self
+ self.dicoArg[objAccas.nom].append(fils.objPyxb)
+ else :
+ objAccas[0].perePyxb=self
+ self.dicoArg[objAccas.nom]=objAccas[0].objPyxb
+ self.listArg.append(objAccas[0].objPyxb)
else :
- #print (objAccas.nom,objAccas.maClasseModeleMetier)
if objAccas.nom == 'Consigne' : continue
self.listArg.append(objAccas.objPyxb)
- dicoargs[objAccas.nom]=objAccas.objPyxb
+ #print (self.listArg)
+ self.dicoArg[objAccas.nom]=objAccas.objPyxb
objAccas.perePyxb=self
- print('X_MCCOMPO -- listArg ---',self.nom,self.listArg)
+ #print('X_MCCOMPO -- listArg ---',self.nom,self.listArg)
+ #print('X_MCCOMPO -- dicoArg ---',self.nom,self.dicoArg)
self.monNomClasseModeleMetier='T_'+self.nom
if self.nom in list(self.cata.DicoNomTypeDifferentNomElt.keys()) :
#print (self.nom)
#print (self.listArg)
# self.objPyxb=self.maClasseModeleMetier(*self.listArg)
- self.objPyxb=self.maClasseModeleMetier(**dicoargs)
+ self.objPyxb=self.maClasseModeleMetier(**self.dicoArg)
newordercontent=[]
+
+ # print ('uuuuuuuuuuuuuu', self.objPyxb.orderedContent())
+ # print ('kkkkkkkkkkkkkkkkkkkkk listArg', self.listArg)
for obj in self.listArg:
- print('X_MCCOMPO -- obj ----',obj)
- newordercontent.append( self.objPyxb.orderedContent()[map(lambda o:id(o.value), self.objPyxb.orderedContent()).index(id(obj))] )
+ # print (obj)
+ # on teste le caractere pluriel
+ if (hasattr(obj, 'nature')) : # attention on a un object Accas et non un pyxb car les MCList n ont pas de objPyxb
+ # print ('obj----------', obj.nom)
+ max=obj[0].definition.max
+ else : max = 1
+ # print (max)
+ if max == 1 :
+ if not(issubclass(type(obj), pyxb.binding.basis.enumeration_mixin) ):
+ newordercontent.append(self.objPyxb.orderedContent()[map(lambda o:id(o.value), self.objPyxb.orderedContent()).index(id(obj))] )
+ else :
+ newordercontent.append(self.objPyxb.orderedContent()[map(lambda o:type(o.value), self.objPyxb.orderedContent()).index(type(obj))] )
+ else : # element Pural
+ for c in self.objPyxb.orderedContent() :
+ if isinstance(c._Content__value,list) and isinstance(c._Content__value[0], type(obj[0].objPyxb)): newordercontent.append(c)
+ # print ('uuuuuuuuuuuuuu', newordercontent)
+
for i in xrange(len(self.listArg)):
self.objPyxb.orderedContent()[i]=newordercontent[i]
self.objPyxb.objAccas=self
- print ('X_MCCOMPO', self, self.nom, self.objPyxb,self.listArg,newordercontent,self.objPyxb.orderedContent())
- print ('_______________________________________')
+ #print ('X_MCCOMPO', self, self.nom, self.objPyxb,self.listArg,newordercontent,self.objPyxb.orderedContent())
+ #print ('_______________________________________')
# assert(self.objPyxb.validateBinding())
def delObjPyxb(self):
#print ('******************************************')
def exploreBLOC(self,objAccas):
+ #print (' ds exploreBLOC', objAccas .nom)
laListeSsLesBlocs=[]
for fils in objAccas.mcListe:
if fils.nature == 'MCBLOC' :
self.exploreBLOC(fils)
elif fils.nature == 'MCList' :
- for objFils in fils :
- #fils.perePyxb=self
- #self.listArg.append(fils.objPyxb)
- # fils ou objFils
- objFils.perePyxb=self
- self.listArg.append(objFils.objPyxb)
- #print (fils.nom ,' est un MC ds un MCLIST et a pour pere Pyxb', self, self.nom)
+ #print ('exploreBLOC des MCList', fils.nom)
+ self.dicoArg[fils.nom]=[]
+ if fils[0].definition.max > 1 :
+ #print ('ajout de ', fils)
+ self.listArg.append(fils) # les MCList n ont pas objPyxb
+ for objFils in fils :
+ objFils.perePyxb=self
+ self.dicoArg[fils.nom].append(objFils.objPyxb)
+ else:
+ fils[0].perePyxb=self
+ self.dicoArg[fils.nom]=fils[0].objPyxb
+ self.listArg.append(fils[0].objPyxb)
else :
if fils.nom == "Consigne" : continue
+ #print ('ajout de 2', fils.objPyxb)
self.listArg.append(fils.objPyxb)
+ self.dicoArg[fils.nom]=fils.objPyxb
fils.perePyxb=self
#print (fils.nom ,' est un SIMP a pour pere Pyxb', self, self.nom)