]> SALOME platform Git repositories - tools/eficas.git/blobdiff - Noyau/N_ETAPE.py
Salome HOME
CCAR: correction d'un probleme de mise a jour de contexte lors d'une insertion
[tools/eficas.git] / Noyau / N_ETAPE.py
index e5d7effc3b46ad13f773f30966c8e9a2c4b239b1..377ce7523aa6d5cd963dc8a2e40fb194ea7f5837 100644 (file)
@@ -1,4 +1,5 @@
-#@ MODIF N_ETAPE Noyau  DATE 03/09/2002   AUTEUR GNICOLAS G.NICOLAS 
+#@ MODIF N_ETAPE Noyau  DATE 22/02/2005   AUTEUR DURAND C.DURAND 
+# -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18,6 +19,8 @@
 #                                                                       
 #                                                                       
 # ======================================================================
 #                                                                       
 #                                                                       
 # ======================================================================
+
+
 """ 
     Ce module contient la classe ETAPE qui sert à vérifier et à exécuter
     une commande
 """ 
     Ce module contient la classe ETAPE qui sert à vérifier et à exécuter
     une commande
@@ -107,11 +110,11 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
          Construit le concept produit de l'opérateur. Deux cas 
          peuvent se présenter :
         
          Construit le concept produit de l'opérateur. Deux cas 
          peuvent se présenter :
         
-            - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création 
-              et le nommage du concept.
+         - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création 
+           et le nommage du concept.
 
 
-            - le parent est défini. Dans ce cas, l'étape demande au parent la création et 
-              le nommage du concept.
+         - le parent est défini. Dans ce cas, l'étape demande au parent la création et 
+           le nommage du concept.
 
       """
       if not self.isactif():return
 
       """
       if not self.isactif():return
@@ -155,11 +158,11 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
       """
           Retourne le concept résultat de l'étape
           Deux cas :
       """
           Retourne le concept résultat de l'étape
           Deux cas :
-                        -  sd_prod de oper n'est pas une fonction
+                   cas 1 : sd_prod de oper n'est pas une fonction
                            il s'agit d'une sous classe de ASSD
                            on construit le sd à partir de cette classe
                            et on le retourne
                            il s'agit d'une sous classe de ASSD
                            on construit le sd à partir de cette classe
                            et on le retourne
-                        -  il s'agit d'une fonction
+                   cas 2 : il s'agit d'une fonction
                            on l'évalue avec les mots-clés de l'étape (mc_liste)
                            on construit le sd à partir de la classe obtenue
                            et on le retourne
                            on l'évalue avec les mots-clés de l'étape (mc_liste)
                            on construit le sd à partir de la classe obtenue
                            et on le retourne
@@ -191,23 +194,25 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
       return self.sd
 
    def get_type_produit(self):
       return self.sd
 
    def get_type_produit(self):
+      try:
+          return self.get_type_produit_brut()
+      except:
+          return None
+
+   def get_type_produit_brut(self):
       """
           Retourne le type du concept résultat de l'étape
           Deux cas :
       """
           Retourne le type du concept résultat de l'étape
           Deux cas :
-                 - sd_prod de oper n'est pas une fonction
+           cas 1 : sd_prod de oper n'est pas une fonction
                    il s'agit d'une sous classe de ASSD
                    on retourne le nom de la classe
                    il s'agit d'une sous classe de ASSD
                    on retourne le nom de la classe
-                 - il s'agit d'une fonction
-                   on l'évalue avec les mots-clés de l'étape (mc_liste)
+           cas 2 : il s'agit d'une fonction
+                    on l'évalue avec les mots-clés de l'étape (mc_liste)
                    et on retourne son résultat
       """
       if type(self.definition.sd_prod) == types.FunctionType:
         d=self.cree_dict_valeurs(self.mc_liste)
                    et on retourne son résultat
       """
       if type(self.definition.sd_prod) == types.FunctionType:
         d=self.cree_dict_valeurs(self.mc_liste)
-        try:
-          sd_prod= apply(self.definition.sd_prod,(),d)
-        except:
-          #traceback.print_exc()
-          return None
+        sd_prod= apply(self.definition.sd_prod,(),d)
       else:
         sd_prod=self.definition.sd_prod
       return sd_prod
       else:
         sd_prod=self.definition.sd_prod
       return sd_prod
@@ -254,7 +259,7 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
    def reset_current_step(self):
       """ 
             Methode utilisee par l'etape self qui remet son etape parent comme 
    def reset_current_step(self):
       """ 
             Methode utilisee par l'etape self qui remet son etape parent comme 
-            etape courante 
+             etape courante 
       """
       #print "reset_current_step ",self.nom
       #traceback.print_stack(limit=3,file=sys.stdout)
       """
       #print "reset_current_step ",self.nom
       #traceback.print_stack(limit=3,file=sys.stdout)
@@ -342,16 +347,6 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
       if hasattr(old_etape,"sdnom") :
         self.sdnom = old_etape.sdnom
 
       if hasattr(old_etape,"sdnom") :
         self.sdnom = old_etape.sdnom
 
-   def get_sd_utilisees(self):
-      """ 
-          Retourne la liste des concepts qui sont utilisés à l'intérieur d'une commande
-          ( comme valorisation d'un MCS) 
-      """
-      l=[]
-      for child in self.mc_liste:
-        l.extend(child.get_sd_utilisees())
-      return l
-
    def reparent(self,parent):
      """
          Cette methode sert a reinitialiser la parente de l'objet
    def reparent(self,parent):
      """
          Cette methode sert a reinitialiser la parente de l'objet
@@ -361,3 +356,40 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
      self.etape=self
      for mocle in self.mc_liste:
         mocle.reparent(self)
      self.etape=self
      for mocle in self.mc_liste:
         mocle.reparent(self)
+
+   def get_cmd(self,nomcmd):
+      """
+          Méthode pour recuperer la definition d'une commande
+          donnee par son nom dans les catalogues declares
+          au niveau du jdc
+          Appele par un ops d'une macro en Python
+      """
+      return self.jdc.get_cmd(nomcmd)
+
+   def copy_intern(self,etape):
+      """
+          Méthode permettant lors du processus de recopie de copier
+          les elements internes d'une etape dans une autre
+      """
+      return
+
+   def full_copy(self,parent=None):
+       """
+          Méthode permettant d'effectuer une copie complète
+          d'une étape (y compris concept produit, éléments internes)
+          Si l'argument parent est fourni, la nouvelle étape
+          aura cet objet comme parent.
+       """
+       new_etape = self.copy()
+       new_etape.copy_reuse(self)
+       new_etape.copy_sdnom(self)
+       if parent: new_etape.reparent(parent)
+       if self.sd :
+          new_sd = self.sd.__class__(etape=new_etape)
+          new_etape.sd = new_sd
+          if self.reuse == None :
+             new_etape.parent.NommerSdprod(new_sd,self.sd.nom)
+          else :
+             new_sd.nom = self.sd.nom
+       new_etape.copy_intern(self)
+       return new_etape