Salome HOME
F.R: -modifs procédure d'installation et suppression de code_aster.gif
[tools/eficas.git] / Noyau / N_JDC_CATA.py
1 """ 
2     Ce module contient la classe de definition JDC_CATA
3     qui permet de spécifier les caractéristiques d'un JDC
4 """
5
6 import types,string,traceback
7
8 import N_ENTITE
9 import N_JDC
10
11 class JDC_CATA(N_ENTITE.ENTITE):
12    """
13     Classe pour definir un jeu de commandes
14
15     Attributs de classe :
16
17     - class_instance qui indique la classe qui devra etre utilisée 
18             pour créer l'objet qui servira à controler la conformité 
19             du jeu de commandes avec sa définition
20
21     - label qui indique la nature de l'objet de définition (ici, JDC)
22
23    """
24    class_instance = N_JDC.JDC
25    label = 'JDC'
26
27    def __init__(self,code='',execmodul=None,regles=(),niveaux=(),**args):
28       """
29       """
30       self.code = code
31       self.execmodul=execmodul
32       if type(regles)== types.TupleType:
33         self.regles = regles
34       else:
35         self.regles=(regles,)
36       # Tous les arguments supplémentaires sont stockés dans l'attribut args
37       # et seront passés au JDC pour initialiser ses paramètres propres
38       self.args=args
39       self.d_niveaux={}
40       self.l_niveaux=niveaux
41       self.commandes=[]
42       for niveau in niveaux:
43          self.d_niveaux[niveau.nom]=niveau
44       # On change d'objet catalogue. Il faut d'abord mettre le catalogue 
45       # courant à None
46       CONTEXT.unset_current_cata()
47       CONTEXT.set_current_cata(self)
48
49    def __call__(self,procedure=None,cata=None,cata_ord_dico=None,
50                      nom='SansNom',parent=None,**args):
51       """
52           Construit l'objet JDC a partir de sa definition (self),
53       """
54       return self.class_instance(definition=self,procedure=procedure,
55                          cata=cata,cata_ord_dico=cata_ord_dico,
56                          nom=nom,
57                          parent=parent,
58                          **args
59                          )
60
61    def enregistre(self,commande):
62       """
63          Methode qui permet aux definitions de commandes de s'enregistrer aupres
64          d'un JDC_CATA
65       """
66       self.commandes.append(commande)
67
68    def verif_cata(self):
69       """
70           Méthode de vérification des attributs de définition
71       """
72       if type(self.regles) != types.TupleType :
73         self.cr.fatal("L'attribut 'regles' doit être un tuple : %s" %`self.regles`)
74       self.verif_cata_regles()
75
76    def verif_cata_regles(self):
77       """
78          Cette méthode vérifie pour tous les objets stockés dans la liste entités
79          respectent les REGLES associés  à self
80       """
81       # A FAIRE
82
83    def report(self):
84       """
85          Methode pour produire un compte-rendu de validation d'un catalogue de commandes
86       """
87       self.cr = self.CR(debut = "Compte-rendu de validation du catalogue "+self.code,
88                          fin = "Fin Compte-rendu de validation du catalogue "+self.code)
89       self.verif_cata()
90       for commande in self.commandes:
91         cr = commande.report()
92         cr.debut = "Début Commande :"+commande.nom
93         cr.fin = "Fin commande :"+commande.nom
94         self.cr.add(cr)
95       return self.cr
96
97    def supprime(self):
98       """
99           Méthode pour supprimer les références arrières susceptibles de provoquer
100           des cycles de références
101       """
102       for commande in self.commandes:
103          commande.supprime()
104
105    def get_niveau(self,nom_niveau):
106       """
107            Retourne l'objet de type NIVEAU de nom nom_niveau
108            ou None s'il n'existe pas
109       """
110       return self.d_niveaux.get(nom_niveau,None)
111
112
113