2 Ce module contient la classe de definition JDC_CATA
3 qui permet de spécifier les caractéristiques d'un JDC
6 import types,string,traceback
11 class JDC_CATA(N_ENTITE.ENTITE):
13 Classe pour definir un jeu de commandes
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
21 - label qui indique la nature de l'objet de définition (ici, JDC)
24 class_instance = N_JDC.JDC
27 def __init__(self,code='',execmodul=None,regles=(),niveaux=(),**args):
31 self.execmodul=execmodul
32 if type(regles)== types.TupleType:
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
40 self.l_niveaux=niveaux
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
46 CONTEXT.unset_current_cata()
47 CONTEXT.set_current_cata(self)
49 def __call__(self,procedure=None,cata=None,cata_ord_dico=None,
50 nom='SansNom',parent=None,**args):
52 Construit l'objet JDC a partir de sa definition (self),
54 return self.class_instance(definition=self,procedure=procedure,
55 cata=cata,cata_ord_dico=cata_ord_dico,
61 def enregistre(self,commande):
63 Methode qui permet aux definitions de commandes de s'enregistrer aupres
66 self.commandes.append(commande)
70 Méthode de vérification des attributs de définition
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()
76 def verif_cata_regles(self):
78 Cette méthode vérifie pour tous les objets stockés dans la liste entités
79 respectent les REGLES associés à self
85 Methode pour produire un compte-rendu de validation d'un catalogue de commandes
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)
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
99 Méthode pour supprimer les références arrières susceptibles de provoquer
100 des cycles de références
102 for commande in self.commandes:
105 def get_niveau(self,nom_niveau):
107 Retourne l'objet de type NIVEAU de nom nom_niveau
108 ou None s'il n'existe pas
110 return self.d_niveaux.get(nom_niveau,None)