]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
1ere version projection XSD pour tenir compte des UserASSD en xml
authorpascale.noyret <pascale.noyret@edf.fr>
Mon, 19 Oct 2020 14:29:01 +0000 (16:29 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Mon, 19 Oct 2020 14:29:01 +0000 (16:29 +0200)
15 files changed:
Editeur/Eficas_utils.py
Editeur/session.py
Efi2Xsd/AccasXsd.py
Efi2Xsd/MCAccasXML.py
Efi2Xsd/balisesXSD.py
Ihm/I_JDC.py
InterfaceQT4/composimp.py
InterfaceQT4/monWidgetPlusieursBase.py
InterfaceQT4/qtEficas.py
Noyau/N_ASSD.py
Noyau/N_ETAPE.py
Noyau/N_JDC_CATA.py
Noyau/N_OPER.py
Noyau/N_UserASSD.py
generator/generator_TELEMAC.py

index 89c601c594f53c4c63503bc5600d697cbb07f369..80951e03fb337837910d31b21a63450b786c01a0 100644 (file)
@@ -44,7 +44,8 @@ def getRepUser(dir):
       le repertoire de l'utilisateur /$home/Eficas_install
   """
 
-  rep_user_eficas= os.path.join(os.environ['HOME'],dir)
+  #rep_user_eficas= os.path.join(os.environ['HOME'],dir)
+  rep_user_eficas= os.path.join(os.path.expanduser("~"),dir)
   if os.path.exists(rep_user_eficas):
     if os.path.isfile(rep_user_eficas) :
       print (tr("Un fichier de nom %s existe deja : impossible de creer un repertoire de meme nom", rep_user_eficas))
index 0fcad7803d36c4859bc6be2caf0102456a642abc..1470fea60a580cd6891f6e48be7b0211f97ab4a3 100644 (file)
@@ -319,8 +319,11 @@ def parse(args):
                 parser.error(tr("Nombre incorrect d'arguments"))
             options.comm.append(file)
             options.studies.append({"comm":file})
-         elif len(args) == 1 and options.locale:
-            print((tr("Localisation specifiee pour l'application.")))
+         elif len(args) == 2 :
+            if options.locale:
+               print((tr("Localisation specifiee pour l'application.")))
+            else:
+               parser.error(tr("Nombre incorrect d'arguments"))
          else:
             parser.error(tr("Nombre incorrect d'arguments"))
 
index 57433906e320283d0d9ce4b6d541bbc7c9381ebf..38af3be04ba1e36a2caab8c9e2109ee7babf4870 100755 (executable)
@@ -379,7 +379,6 @@ class X_compoFactoriseAmbigu(X_definition):
        
        
    def ajouteAuxTextes(self,nomMC,indent,debug=False) :
-       if nomMC=='N1' and self.nom == 'bloc_une_bloc_deux' : debug=True
        if debug : print ('ajouteAuxTextes', nomMC, self.nom, self.entites[nomMC])
        #if debug : 
        #   traceback.print_stack() 
@@ -751,8 +750,9 @@ class X_BLOC (X_definitionComposee):
 #--------------------------------
 class X_SIMP (X_definition):
 #--------------------------------
-   def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
+   def dumpXsd(self, dansFactorisation=False, multiple=False, first=False, debug=False):
        #if PourTraduction  : print (self.nom)
+       if debug : print ('X_SIMP dumpXsd pour', self.nom, '___________________________')
        self.prepareDumpXSD()
        # si inUnion la comparaison est fausse : on cree le nomDuType
        if multiple : self.inUnion=True
@@ -766,6 +766,7 @@ class X_SIMP (X_definition):
 
        #  --> homonymie on peut utiliser genealogie ?
        self.nomDuTypeDeBase = self.traduitType()
+       if debug : print ('nomDuTypeDeBase', self.nomDuTypeDeBase)
        if not multiple : 
           self.nomDuTypePyxb   = self.definitNomDuTypePyxb()
        else :
@@ -775,6 +776,8 @@ class X_SIMP (X_definition):
              self.aCreer = True
 
        
+       if debug : print ('nomDuTypePyxb', self.nomDuTypePyxb)
+       if debug : print ('aCreer', self.aCreer)
        # on se sert des listes ou non pour  la gestion des minOccurs /maxOccurs est > 0
        if self.statut =='f' : minOccurs = 0
        else                 : minOccurs = 1
@@ -795,7 +798,7 @@ class X_SIMP (X_definition):
                 for val in self.defaut : txtDefaut+=str(val) +" "
                 self.texteElt = eltWithDefautDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
              else :
-                if str(self.defaut)   == 'True' : txtDefaut = 'true'
+                if str(self.defaut)   == 'True'  : txtDefaut = 'true'
                 elif str(self.defaut) == 'False' : txtDefaut = 'false'
                 else : txtDefaut = str(self.defaut)
                 self.texteElt = eltWithDefautDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
@@ -803,21 +806,23 @@ class X_SIMP (X_definition):
        elif first: 
           self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,1,1)
 
-       #typeATraduire=self.type[0]
-       #if (isinstance(typeATraduire, Accas.UserASSD) or issubclass(typeATraduire, Accas.UserASSD)) : 
-       #    nomType = self.type[0].__name__
-       #    self.texteElt = self.texteElt[:-3]+">\n"
-       #    self.texteElt += "\t"+attributeNameName
-       #    if len(self.type) == 2 and self.type[1]=='createObject' : self.texteElt += attributeTypeForUserASSDCreation
-       #    else : self.texteElt += attributeTypeForUserASSDConsommation
-       #    self.texteElt += "\t"+attributeTypeUtilisateurName.format(nomType)
-       #    self.texteElt += finTexteElt 
-
-    
        # self.aCreer est mis a jour ds definitNomDuTypePyxb
        # ou si elt est le 1er d une liste identique
-       #print ('je suis aCreer', self.aCreer)
+       if debug : print ('je suis aCreer', self.aCreer)
        if not self.aCreer : return
+
+       typeATraduire=self.type[0]
+       if (not(isinstance(typeATraduire,str)) and issubclass(typeATraduire, Accas.UserASSD)) : 
+            cata = CONTEXT.getCurrentCata() 
+            if len(self.type) == 2 and self.type[1]=='createObject' : suffixe = 'C'
+            else : suffixe = 'U'
+            if typeATraduire.__name__+'_'+suffixe not in cata.listeUserASSDDumpes :
+               self.texteSimple = defUserAssd.format(typeATraduire.__name__, suffixe) + self.texteSimple
+               cata.listeUserASSDDumpes.add(typeATraduire.__name__+'_'+suffixe)
+            if cata.definitUserASSD ==False  :
+               cata.definitUserASSD = True
+               self.texteSimple = defBaseXSDUserAssd + self.texteSimple
+    
  
        if not multiple : self.texteSimple  += debutSimpleType.format(self.nomDuTypePyxb)
        else : self.texteSimple  += debutSimpleTypeSsNom
@@ -876,22 +881,26 @@ class X_SIMP (X_definition):
        else : 
              typeATraduire=self.type[0]
        if not (typeATraduire in list(dictNomsDesTypes.keys())) :
-          if (isinstance(typeATraduire, Accas.ASSD) or issubclass(typeATraduire, Accas.ASSD)) : 
+          #if (isinstance(typeATraduire, Accas.ASSD) or issubclass(typeATraduire, Accas.ASSD)) : 
+          if (not(isinstance(typeATraduire,str)) and issubclass(typeATraduire, Accas.ASSD)) : 
              # cas d une creation
              cata = CONTEXT.getCurrentCata() 
+             # PNPNPN a Revoir pour la creation des keyrefs 
              if len(self.type) == 2 and self.type[1]=='createObject' : 
                 if typeATraduire.__name__ not in list(cata.dictTypesASSDorUserASSDCrees) :
                     cata.dictTypesASSDorUserASSDCrees[typeATraduire.__name__]=[self,]
                 else :
                     cata.dictTypesASSDorUserASSDCrees[typeATraduire.__name__].append(self)
-                return 'xs:string'
+                if issubclass(typeATraduire, Accas.UserASSD) : return typeATraduire.__name__+'_C'
+                else : return  'xs:string'
 
              # cas d une consommation
              if typeATraduire not in list(cata.dictTypesASSDorUserASSDUtilises) :
                 cata.dictTypesASSDorUserASSDUtilises[typeATraduire]=[self,]
              else :
                 cata.dictTypesASSDorUserASSDUtilises[typeATraduire].append(self,)
-             return 'xs:string'
+             if issubclass(typeATraduire, Accas.UserASSD) : return typeATraduire.__name__+'_U'
+             else : return  'xs:string'
           else : return ('YYYYY')
        return dictNomsDesTypes[typeATraduire]
   
index 82ce57218d3d017dce511bcfff2d1cec980349a5..6da4d264c57d4d9281366bd068bd9af47880c631 100755 (executable)
@@ -155,10 +155,6 @@ class X_MCSIMP(X_OBJECT):
 
 
         #if self.objPyxb !=None : self.objPyxb.objAccas=self
-      if isinstance(self.valeur,A_ASSD.ASSD)  : 
-         setattr(self.valeur,'typeUtilisateur','toto')
-         print (dir(self.definition))
-         print (dir(self.valeur))
       if debug : print ('X_MCSIMP', self.nom, self.objPyxb, )
       if debug : print ('__________ fin X_MCSIMP', self.objPyxb, self.nom, self, self.maClasseModeleMetier,self.valeur)
 
@@ -167,10 +163,6 @@ class X_MCSIMP(X_OBJECT):
        if not self.cata or not self.cata.modeleMetier : return
        if debug : print (' ___________________________ dans setValeurObjPyxb MCSIMP ', self.nom, newVal)
        if debug : print (' self.perePyxb = ', self.perePyxb.nom)
-       isUserASSD = False
-       if inspect.isclass(newVal) and issubclass(newVal,A_ASSD)  : 
-          isUserASSD = True
-          newVal = newVal.nom
        if debug : print (self.nom , ' a pour pere', self.perePyxb, self.perePyxb.nom, self.perePyxb.objPyxb)
        if debug : print ('debut du setValeurObjPyxb pour ', self.nom, self.perePyxb.objPyxb.orderedContent())
        
@@ -199,8 +191,6 @@ class X_MCSIMP(X_OBJECT):
            indice+=1
        if not trouve : print ('Attention souci au changement de valeur de ', self.nom)
        self.objPyxb=nvlObj
-       if isUserASSD : setattr(self.objPyxb,name,newVal)
-       if isUserASSD : print(self.objPyxb.typeUtilisateur)
        #self.objPyxb.objAccas=self
        if debug : print ('fin du setValeurObjPyxb pour ', self.nom, self.perePyxb.objPyxb.orderedContent())
 
@@ -377,7 +367,7 @@ class X_ETAPE(X_MCCOMPO) :
    def metAJourNomASSD(self, nom,debug=False):
       if not self.cata or not self.cata.modeleMetier : return
       if debug : print ('X_ETAPE metAJourLesAttributs', self.nom, nom,' --------------------------')
-      self.objPyxb.name=nom
+      self.objPyxb.accasName=nom
 
 class X_JDC (X_MCCOMPO):
 # ---------------------
@@ -431,7 +421,7 @@ class X_JDC (X_MCCOMPO):
       return (self.objPyxb.toDOM().toprettyxml())
         
 
-   def analyseFromXML(self,debug=True):
+   def analyseFromXML(self,debug=False):
       print ("je suis ds analyseFromXML -- > appel ds analyseXML de I_JDC.py")
       print (self.procedure)
       if self.procedure == "" : return
@@ -439,27 +429,25 @@ class X_JDC (X_MCCOMPO):
       for contentObjEtape in self.objPyxb.orderedContent():
           objEtape=contentObjEtape.value
           objEtape.dictArgs=(self.pyxbToDict(objEtape))
-          # attention au call d Oper qui renomme l objet pyxb
-          if hasattr(objEtape,'name') :  sdName = objEtape.name
           objEtape.monNomClasseAccas=objEtape._ExpandedName.localName()
           objEtape.monNomClasseAccas=objEtape.monNomClasseAccas[2:]
           # doute sur les 2 lignes suivantes : objEtape peut etre contentObjEtape 2juin20
           objEtape.dictPyxb['objEnPyxb']=objEtape
           objEtape.dictArgs['dicoPyxbDeConstruction']=objEtape.dictPyxb
-          print ('dicoPyxbDeConstruction', objEtape.dictArgs['dicoPyxbDeConstruction'])
+          if debug : print ('dicoPyxbDeConstruction', objEtape.dictArgs['dicoPyxbDeConstruction'])
           maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas)
           if debug : print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
-          if debug : print (maClasseAccas)
-          if debug : print (objEtape , type(objEtape))
-          if debug : print (objEtape.dictPyxb)
-          if debug : print (objEtape.monNomClasseAccas, type(objEtape.monNomClasseAccas))
-          if debug : print (objEtape._ExpandedName, type(objEtape._ExpandedName))
-          if debug : print ('dictArgs',objEtape.dictArgs)
-          if debug : print ('dictPyxb',objEtape.dictPyxb)
-          objAccasEtape=maClasseAccas(**(objEtape.dictArgs))
-          if hasattr(objEtape,'name') :  objAccasEtape.setName(sdName)
-          if debug : print (objAccasEtape)
+          if debug : print ('maClasseAccas ', maClasseAccas)
+          if debug : print ('objEtape ', objEtape , type(objEtape))
+          if debug : print ('nomClasseAccas ',objEtape.monNomClasseAccas, type(objEtape.monNomClasseAccas))
+          if debug : print ('_ExpandedName ', objEtape._ExpandedName, type(objEtape._ExpandedName))
+          if debug : print ('dictArgs ',objEtape.dictArgs)
+          if debug : print ('dictPyxb ',objEtape.dictPyxb)
+          # attention au call d Oper qui renomme l objet pyxb
+          if hasattr(objEtape,'accasName') :  
+             if debug and hasattr(objEtape,'accasName') :print ('sdName',objEtape.accasName)
+             objAccasEtape=maClasseAccas(nomXML=objEtape.accasName, **(objEtape.dictArgs))
+          else : objAccasEtape=maClasseAccas(**(objEtape.dictArgs))
           if debug : print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
       
 
@@ -474,12 +462,15 @@ class X_JDC (X_MCCOMPO):
     # ---------------
     if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition): 
        print ('je suis un MCSimple')
-    # il faut traiter les UserASSD
        # traitement scalaire
        objAAnalyser.dictPyxb=objAAnalyser
        if not (isinstance(objAAnalyser,pyxb.binding.basis.STD_list)):
-          #print ('je suis un scalaire')
+          # print ('je suis un scalaire')
           #try :  # python 3
+          if isinstance(objAAnalyser,self.cata.modeleMetier.AccasUserAssd):
+             import inspect
+             laClassePyxbUserAssd=inspect.getmro(objAAnalyser.__class__)[1]
+             return self.creeUserAssd(objAAnalyser,laClassePyxbUserAssd)
           if isinstance(objAAnalyser, str)  : return str(objAAnalyser)
           if isinstance(objAAnalyser, int)  : return int(objAAnalyser)
           if isinstance(objAAnalyser, float): return float(objAAnalyser)
@@ -541,6 +532,33 @@ class X_JDC (X_MCCOMPO):
     #print ('fin pour ',objAAnalyser)
     return dictArgs
 
+   def creeUserAssd(self,objAAnalyser,laClassePyxbUserAssd):
+        
+        print ('ttttttttttttttttttt')
+        nomClasseAccasUserAssd=laClassePyxbUserAssd.__name__[:-2]
+        enCreation=False
+        if laClassePyxbUserAssd.__name__[-2:]== '_C' : enCreation = True
+        elif laClassePyxbUserAssd.__name__[-2:] != '_U' : print ('pb avec', laClassePyxbUserAssd); exit()
+        laClasseAccas=getattr(self.cata,nomClasseAccasUserAssd)
+        if not(enCreation): 
+             if str(objAAnalyser) in self.g_context.keys():return self.g_context[str(objAAnalyser)]
+             else :
+                obj=laClasseAccas()
+                self.g_context[str(objAAnalyser)]=obj
+                return obj
+        if str(objAAnalyser) in self.g_context.keys():
+           if isinstance(self.g_context[str(objAAnalyser)],laClasseAccas):
+                return self.g_context[str(objAAnalyser)] 
+           else : 
+                nvlObj=laClasseAccas()
+                oldObj=self.g_context[str(objAAnalyser)]
+                nvlObj.transfere(oldObj)
+                self.g_context[str(objAAnalyser)]=nvlObj
+                return nvlObj
+        else :
+           obj=laClasseAccas()
+           self.g_context[str(objAAnalyser)]=obj
+           return obj
    
 #   def analyseContent(self,objAAnalyser):
 #       objAAnalyser.dictArgs={}
index 8e2e732fe30311529b61439c807ee691de80b6f7..c86ec98d51a1d2976c0f2c386cb5fd3a619c5f79 100644 (file)
@@ -66,11 +66,14 @@ finUnion          = '\t\t\t</xs:union>\n'
 
 
 # User OR ASSD
-attributeNameName    = '\t\t<xs:attribute name="name" type="xs:string"/>\n'
+attributeNameName    = '\t\t<xs:attribute name="accasName" type="xs:string"/>\n'
 attributeTypeForASSD = '\t\t<xs:attribute name="accasType" type="xs:string" fixed="ASSD"/>\n'
 attributeTypeUtilisateurName = '\t\t<xs:attribute name="typeUtilisateur" type="xs:string" fixed="{}"/>\n'
 producingASSDkeyRefDeclaration='\t<xs:key name="Key_Name_For_{}">\n\t\t<xs:selector xpath="."/>\n\t\t<xs:field xpath="{}"/>\n\t</xs:key>\n'
 texteFieldUnitaire="./{}:{}/@name |"
+defBaseXSDUserAssd='\t<xs:simpleType name="AccasUserAssd">\n\t\t<xs:restriction base="xs:string">\n\t\t</xs:restriction>\n\t</xs:simpleType>\n'
+defUserAssd='\t<xs:simpleType name="{}_{}">\n\t\t<xs:restriction base="AccasUserAssd">\n\t\t</xs:restriction>\n\t</xs:simpleType>\n'
+
 
 # CATA
 debutTypeCata     = '\t<xs:complexType name="T_{}">\n\t\t<xs:choice minOccurs="0" maxOccurs="unbounded">\n'
index c0db82618085aa056b1bbeb66c56de7ab8943311..58c9d8f1e32bbaf7c4935eb50d65ce8b0ffcc64f 100644 (file)
@@ -568,7 +568,7 @@ class JDC(I_OBJECT.OBJECT):
 
    def analyseXML(self):
          print ('analyseXML')
-         print (self.procedure)
+         #print (self.procedure)
          self.setCurrentContext()
          self.analyseFromXML()
 
index c550b15e27294fded11a2aa457502aecd39795eb..d41e340af0d03fa4f5aa9617133e5c27b7937fd6 100644 (file)
@@ -215,13 +215,12 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
                num=self.item.object.definition.type[0].ntuple
                nomDeLaClasse = 'MonWidgetPlusieursTuple'+str(num)
                nomDuFichier  = 'InterfaceQT4.monWidgetPlusieursTupleN'
-               #try:
-               if 1 :
+               try:
                   _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0)
                   MonWidgetPlusieursTuple =  getattr(_temp,nomDeLaClasse)
-               #except :
-               #   print ("Pas de Tuple de longueur : ", num)
-               #   print ("Prevenir la maintenance ")
+               except :
+                  print ("Pas de Tuple de longueur : ", num)
+                  print ("Prevenir la maintenance ")
                widget=MonWidgetPlusieursTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
           elif self.item.hasInto():
index 50a2413b89517894cb064f205541a591782d9c00..10abc607ea54f35125e253762a229db0b85e07ea 100644 (file)
@@ -35,7 +35,7 @@ from PyQt5.QtCore    import QTimer, QSize, Qt
 from Extensions.i18n import tr
 
 from InterfaceQT4.feuille                import Feuille
-from desWidgetPlusieursBase        import Ui_WidgetPlusieursBase 
+from desWidgetPlusieursBase              import Ui_WidgetPlusieursBase 
 from InterfaceQT4.politiquesValidation   import PolitiquePlusieurs
 from InterfaceQT4.qtSaisie               import SaisieValeur
 from InterfaceQT4.gereListe              import GereListe
@@ -49,7 +49,7 @@ nbMinimumDeQLineEdit=7
 class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
-        #print ('MonWidgetPlusieursBase', nom)
+        print ('MonWidgetPlusieursBase', nom)
         self.inFocusOutEvent      = False
         self.changeUnLineEdit     = False
         self.nomLine              = "lineEditVal"
index 0b9f14a5222376e6a89c4dda7394f039881f9265..61c8b9d5a8eb30bd6b92a7439a4ea15d435c1ee4 100755 (executable)
@@ -673,10 +673,11 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
     def initRecents(self):
        self.recent =  []
        try :
-           if sys.platform[0:5]=="linux" :
-              rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
-           else :
-              rep=os.path.join('C:/','.config/Eficas',self.code)
+           #if sys.platform[0:5]=="linux" :
+              #rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
+           rep=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code)
+           #else :
+           #   rep=os.path.join('C:/','.config/Eficas',self.code)
            monFichier=rep+"/listefichiers_"+self.code
            index=0
            f=open(monFichier)
index 801df350e4964991e5ec4f792c7ad64b92e9d835..7349a236dda4bf1a9ca7b52ace063faca9fe738d 100644 (file)
@@ -105,11 +105,6 @@ class ASSD(object):
     def setName(self, nom):
         """Positionne le nom de self 
         """
-        print ('uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu')
-        print ('uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu')
-        print ('uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu')
-        print ('uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu')
-        print ('uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu')
         self.nom = nom
 
     def isTypCO(self):
index 3e2da2dbff69536c048545ece688298fd68a975f..7b0357056ad3a5499ea3465596dc740e0e9304bb 100644 (file)
@@ -97,7 +97,6 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
         enregistrements necessaires
         surcharge dans Ihm
         """
-        #print ('makeRegister de  ETAPE')
         if self.parent:
             self.jdc = self.parent.getJdcRoot()
             self.id = self.parent.register(self)
index 3e8141f3d6bd86541903c3e781d8c1574864bf36..1f507c965758ba32eca2b968ddf01a78b2ddb83f 100644 (file)
@@ -73,10 +73,12 @@ class JDC_CATA(N_ENTITE.ENTITE):
         CONTEXT.unsetCurrentCata()
         CONTEXT.setCurrentCata(self)
         self.fenetreIhm=None
+        self.definitUserASSD = False
         self.dictTypesXSD={}
         self.dictTypesXSDJumeaux={}
         self.dictTypesASSDorUserASSDCrees={}
         self.dictTypesASSDorUserASSDUtilises={}
+        self.listeUserASSDDumpes=set()
 
  
     def __call__(self, procedure=None, cata=None, cata_ord_dico=None,
index 3b18d5a0b024a085edd0543b87eca9e0c96b3ea2..48239ae1cd84e4e78765f6f2a23fc402ef4ce824 100644 (file)
@@ -122,12 +122,13 @@ class OPER(N_ENTITE.ENTITE):
         self.txtNomComplet=""
         self.dejaPrepareDump=False
 
-    def __call__(self, reuse=None, **args):
+    def __call__(self, reuse=None, nomXML=None,**args):
         """
             Construit l'objet ETAPE a partir de sa definition (self),
             puis demande la construction de ses sous-objets et du concept produit.
         """
-        nomsd = self.nommage.getNomConceptResultat(self.nom)
+        if nomXML == None : nomsd = self.nommage.getNomConceptResultat(self.nom)
+        else : nomsd = nomXML
         etape = self.class_instance(oper=self, reuse=reuse, args=args)
         etape.MCBuild()
         etape.metAJourNomASSD(nomsd)
index 6ed1812619ea927ae429fc15db2efac71ff90ac0..f730a0c4964cff7250dcf110e075524c4ff97afb 100644 (file)
@@ -44,6 +44,7 @@ class UserASSD(ASSD):
     """
 
     def __init__(self,nom='sansNom'):
+       #print ('dans init de UserASSD pour ', nom)
        self.nom    = nom
        self.jdc    = CONTEXT.getCurrentJdC()
        self.parent = None 
@@ -54,6 +55,7 @@ class UserASSD(ASSD):
        self.ptr_sdj   = None
 
 
+
     def initialiseParent(self, parent):
        #print ('je passe initialiseParent pour : ', self, parent)
        self.parent= parent
@@ -71,6 +73,7 @@ class UserASSD(ASSD):
        self.valeur=valeur
 
     def ajoutUtilisePar(self,mc):
+       #print ('je passe ajoutUtilisePar pour : ', self.nom)
        self.utilisePar.add(mc)
 
     def enleveUtilisePar(self,mc):
@@ -81,12 +84,16 @@ class UserASSD(ASSD):
        self.jdc.delConcept(self.nom)
        self.jdc.sdsDict[nouveauNom] = self
        self.setName(nouveauNom)
-       #print ('je suis dans renomme',nouveauNom, self.nom)
-       #print (self.utilisePar)
        for mc in (self.utilisePar):
            mc.demandeRedessine()
        
 
+    def transfere (self,obj):
+    # uniquement utise pour les lectures XML  
+        self.utilisePar=obj.utilisePar
+        self.id=obj.id
+        for mc in self.utilisePar: mc.valeur=self
+
     def deleteReference(self):
        print ('dans deleteReference')
        for MC in self.utilisePar : 
index a89b564ee091334a7a46e2389f83a5d43af7450f..6935d5371a9fc9648935d2b88e5bec032ca8ce74 100644 (file)
@@ -174,8 +174,10 @@ class TELEMACGenerator(PythonGenerator):
         s=PythonGenerator.generMCSIMP(self,obj)
 
 
-        # si le statut = Leger on peut vouloir forcer l ecriture
-        if self.statut == 'Leger'  and obj.definition.sortie == 'n':
+        # Attention pas sur --> ds certains cas non traite par MCFACT ?
+        # a reflechir avec Yoann
+        # ajouter le statut ?
+        if self.statut == 'Leger' :
           if hasattr(obj.definition,'defaut') and (obj.definition.defaut == obj.valeur) and (obj.nom not in self.listeTelemac) : return s
           if hasattr(obj.definition,'defaut') and obj.definition.defaut != None and (type(obj.valeur) == tuple or type(obj.valeur) == list) and (tuple(obj.definition.defaut) == tuple(obj.valeur)) and (obj.nom not in self.listeTelemac) : return s