1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 Ce module sert à construire les structures de données porteuses
23 des informations liées aux groupes de commandes
29 Pour le moment la classe UIINFO ne sait traiter que des infos
30 portant sur la definition des groupes de commandes
31 Les autres informations sont ignorées
33 def __init__(self,parent,groupes=None,**args):
35 Initialiseur de la classe UIINFO.
36 Initialise a partir du dictionnaire UIinfo passé à
37 un objet ENTITE les attributs de la classe
39 # L'attribut parent stocke le lien vers l'objet ENTITE relié à UIINFO
43 # L'entite n'a pas de groupe associé. On lui associe le groupe "DEFAUT"
44 self.groupes=("DEFAUT",)
45 if type(self.groupes) != types.TupleType:
46 self.groupes=(self.groupes,)
48 def traite_commande(commande,niveau):
50 Cette fonction cree l'attribut UI de l'objet commande
51 à partir des informations contenues dans UIinfo
53 uiinfo=commande.UIinfo or {}
54 UI=UIINFO(commande,**uiinfo)
56 if "CACHE" in UI.groupes:
57 # La commande est cachee aux utilisateurs
58 #niveau.dict_groupes["CACHE"].append(commande.nom)
61 # On ajoute la commande dans tous les groupes specifies
62 for grp in UI.groupes:
63 if not niveau.dict_groupes.has_key(grp): niveau.dict_groupes[grp]=[]
64 niveau.dict_groupes[grp].append(commande.nom)
66 def traite_niveau(niveau):
67 if niveau.l_niveaux == ():
68 # Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes
69 niveau.dict_groupes={}
70 for oper in niveau.entites:
71 traite_commande(oper,niveau)
72 # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
74 niveau.liste_groupes=niveau.dict_groupes.keys()
75 # On ordonne les listes alphabétiquement
76 niveau.liste_groupes.sort()
77 for v in niveau.dict_groupes.values():v.sort()
78 #print niveau.liste_groupes
79 #print niveau.dict_groupes
81 for niv in niveau.l_niveaux:
84 def traite_UIinfo(cata):
86 Cette fonction parcourt la liste des commandes d'un catalogue (cata)
87 construit les objets UIINFO à partir de l'attribut UIinfo de la commande
88 et construit la liste complète de tous les groupes présents
90 #dict_groupes["CACHE"]=[]
91 #XXX Ne doit pas marcher avec les niveaux
92 if cata.JdC.l_niveaux == ():
93 # Il n'y a pas de niveaux
94 # On stocke la liste des groupes et leur contenu dans le JdC
95 # dans les attributs liste_groupes et dict_groupes
96 cata.JdC.dict_groupes={}
97 for commande in cata.JdC.commandes:
98 traite_commande(commande,cata.JdC)
99 # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
101 cata.JdC.liste_groupes=cata.JdC.dict_groupes.keys()
102 # On ordonne les listes alphabétiquement
103 cata.JdC.liste_groupes.sort()
104 for v in cata.JdC.dict_groupes.values():v.sort()
105 #print cata.JdC.liste_groupes
106 #print cata.JdC.dict_groupes
108 # Le catalogue de commandes contient des définitions de niveau
109 for niv in cata.JdC.l_niveaux: