]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
bug sur les mots clefs facultatifs qui prennent la place des autres!!
authorpascale.noyret <pascale.noyret@edf.fr>
Fri, 10 May 2019 16:05:38 +0000 (18:05 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Fri, 10 May 2019 16:05:38 +0000 (18:05 +0200)
Efi2Xsd/MCAccasXsd.py

index 159c476ded5b3a22ee599e39f3bbf65ffc1d35f8..5c4b057f1734b806fba7cf5481970102836d2ee8 100755 (executable)
@@ -178,9 +178,9 @@ class X_MCSIMP(X_OBJECT):
         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):
@@ -261,30 +261,37 @@ class X_MCCOMPO(X_OBJECT) :
 # -------------------------
 # 
    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()) : 
@@ -299,17 +306,35 @@ class X_MCCOMPO(X_OBJECT) :
         #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):
@@ -321,21 +346,29 @@ class X_MCCOMPO(X_OBJECT) :
       #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)