Salome HOME
travail sur monPlusieurs
[tools/eficas.git] / Noyau / N_JDC_CATA.py
1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 #
21 # ======================================================================
22
23
24 """
25     Ce module contient la classe de definition JDC_CATA
26     qui permet de spécifier les caractéristiques d'un JDC
27 """
28
29 import types,string,traceback
30
31 import N_ENTITE
32 import N_JDC
33 from strfunc import ufmt
34
35 class JDC_CATA(N_ENTITE.ENTITE):
36    """
37     Classe pour definir un jeu de commandes
38
39     Attributs de classe :
40
41     - class_instance qui indique la classe qui devra etre utilisée
42             pour créer l'objet qui servira à controler la conformité
43             du jeu de commandes avec sa définition
44
45     - label qui indique la nature de l'objet de définition (ici, JDC)
46
47    """
48    class_instance = N_JDC.JDC
49    label = 'JDC'
50
51    def __init__(self,code='',execmodul=None,regles=(),niveaux=(),**args):
52       """
53       """
54       self.code = code
55       self.execmodul=execmodul
56       if type(regles)== types.TupleType:
57         self.regles = regles
58       else:
59         self.regles=(regles,)
60       # Tous les arguments supplémentaires sont stockés dans l'attribut args
61       # et seront passés au JDC pour initialiser ses paramètres propres
62       self.args=args
63       self.d_niveaux={}
64       self.l_niveaux=niveaux
65       self.commandes=[]
66       for niveau in niveaux:
67          self.d_niveaux[niveau.nom]=niveau
68       # On change d'objet catalogue. Il faut d'abord mettre le catalogue
69       # courant à None
70       CONTEXT.unset_current_cata()
71       CONTEXT.set_current_cata(self)
72
73    def __call__(self,procedure=None,cata=None,cata_ord_dico=None,
74                      nom='SansNom',parent=None,**args):
75       """
76           Construit l'objet JDC a partir de sa definition (self),
77       """
78       return self.class_instance(definition=self,procedure=procedure,
79                          cata=cata,cata_ord_dico=cata_ord_dico,
80                          nom=nom,
81                          parent=parent,
82                          **args
83                          )
84
85    def enregistre(self,commande):
86       """
87          Methode qui permet aux definitions de commandes de s'enregistrer aupres
88          d'un JDC_CATA
89       """
90       self.commandes.append(commande)
91
92    def verif_cata(self):
93       """
94           Méthode de vérification des attributs de définition
95       """
96       self.check_regles()
97       self.verif_cata_regles()
98
99    def verif_cata_regles(self):
100       """
101          Cette méthode vérifie pour tous les objets stockés dans la liste entités
102          respectent les REGLES associés  à self
103       """
104       # A FAIRE
105
106    def report(self):
107       """
108          Methode pour produire un compte-rendu de validation d'un catalogue de commandes
109       """
110       self.cr = self.CR(debut = u"Compte-rendu de validation du catalogue "+self.code,
111                         fin = u"Fin Compte-rendu de validation du catalogue "+self.code)
112       self.verif_cata()
113       for commande in self.commandes:
114         cr = commande.report()
115         cr.debut = u"Début Commande :"+commande.nom
116         cr.fin = u"Fin commande :"+commande.nom
117         self.cr.add(cr)
118       return self.cr
119
120    def supprime(self):
121       """
122           Méthode pour supprimer les références arrières susceptibles de provoquer
123           des cycles de références
124       """
125       for commande in self.commandes:
126          commande.supprime()
127
128    def get_niveau(self,nom_niveau):
129       """
130            Retourne l'objet de type NIVEAU de nom nom_niveau
131            ou None s'il n'existe pas
132       """
133       return self.d_niveaux.get(nom_niveau,None)
134
135
136