Package zephir :: Package rapports :: Module rapport
[frames] | no frames]

Source Code for Module zephir.rapports.rapport

  1  # -*- coding: UTF-8 -*- 
  2  ########################################################################### 
  3  # Eole NG - 2007   
  4  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon) 
  5  # Licence CeCill  cf /root/LicenceEole.txt 
  6  # eole@ac-dijon.fr  
  7  #   
  8  # rapport.py 
  9  #   
 10  # Interface d'écriture de rapport pour Zephir 
 11  #        
 12  ########################################################################### 
 13  import random,os 
 14  from zephir.rapports import connecteur, rml 
 15  from zephir import config 
 16   
17 -class Rapport:
18
19 - def __init__(self,server,rne_rapport=None):
20 self.PATH = config.PATH_TEMP 21 if not os.path.isdir(config.PATH_TEMP): 22 os.makedirs(config.PATH_TEMP) 23 self.connect = connecteur.Connecteur(server,rne_rapport) 24 self.rml = rml.RML()
25
26 - def rapport_global(self):
27 """ 28 Rapport concernant le zephir dans son ensemble 29 """ 30 xml = self.modules() + self.rml.page_break() 31 xml += self.variantes() + self.rml.page_break() 32 xml += self.liste_etabs() + self.rml.page_break() 33 xml += self.detail_etabs() + self.rml.page_break() 34 pdf_string = self.rml.page("Rapport global",xml) 35 pdf = self.rml.dump_pdf(pdf_string) 36 filename = os.path.join(self.PATH,"rapport.pdf") 37 fh = open(filename,'w') 38 fh.write(pdf) 39 fh.close()
40 41
42 - def pdf_file(self, pdf_string):
43 """Serialisation de la chaine pdf 44 dans un fichier au nom aléatoire 45 """ 46 filename = os.path.join(self.PATH, str(random.random()) + ".pdf") 47 48 fh = open(filename,'w') 49 fh.write(pdf_string) 50 fh.close() 51 52 return filename
53
54 - def modules(self):
55 """Liste des modules 56 """ 57 module = self.connect.module() 58 table = self.rml.list_to_table(module) 59 60 xml = self.rml.sect("Liste des modules disponibles", table ) 61 62 return xml
63
64 - def variante_module(self, id_module):
65 """ 66 """ 67 # récupération du nom du module 68 title = "Variantes du module : %s" % self.connect.nom_module(id_module) 69 70 # récupération des variantes 71 variante = self.connect._dict_variante(id_module) 72 xml = "" 73 for id_variante in variante.keys(): 74 xml = self.rml.list_to_table(self.connect.get_variante(id_variante)) 75 rml_string = self.rml.sect(title, xml) 76 return rml_string
77
78 - def variantes(self):
79 title = "Liste des variantes" 80 xml = "" 81 for id_module in self.connect.dict_module().keys(): 82 xml += self.variante_module(id_module) 83 return xml
84 85
86 - def detail_etab(self, id_etab):
87 # on ignore les établissements n'ayant pas de serveurs 88 serveurs= self.connect.id_serveur_etab(id_etab) 89 if serveurs == []: 90 serveurs = "" 91 else: 92 serveurs= self._liste_serveurs_etab(id_etab) 93 title = "Détails de l'établissement %s" % self.connect.nom_etab(id_etab) 94 etab = self.connect.get_etab(id_etab) 95 xml = self.rml.dict_to_list(etab) 96 rml_string = self.rml.sect(title, xml) 97 return rml_string + serveurs
98
99 - def liste_etabs(self):
100 title = "Liste des établissements" 101 list_etab = self.connect.noms_etab() 102 xml = self.rml.list_to_list(list_etab) 103 rml_string = self.rml.sect(title, xml) 104 return rml_string
105
106 - def detail_etabs(self):
107 title = "Détail des établissements ayant des serveurs" 108 xml = "" 109 for id_etab in self.connect.id_etab(): 110 serveurs= self.connect.id_serveur_etab(id_etab) 111 # on ignore les établissements n'ayant pas de serveurs 112 if serveurs != []: 113 xml += self.detail_etab(id_etab) 114 xml += self.rml.page_break() 115 rml_string = self.rml.sect(title, xml) 116 return rml_string
117
118 - def _liste_serveurs_etab(self,id_etab):
119 """Liste simple des serveurs d'un etab 120 """ 121 title="Liste des serveurs de l'établissement : %s" % self.connect.nom_etab(id_etab) 122 123 list_serveur = self.connect.libelle_serveur_etab(id_etab) 124 xml = self.rml.list_to_list(list_serveur) 125 126 return self.rml.sect(title, xml)
127
128 - def serveurs_etab(self, id_etab):
129 """liste détaillée des serveurs d'un etab 130 """ 131 title="Liste détaillées des serveurs de l'établissement : %s" % self.connect.nom_etab(id_etab) 132 list_serv = self.connect.id_serveur_etab(id_etab) 133 134 rml_string="" 135 for id_serveur in list_serv: 136 rml_string += self.serveur(id_serveur) 137 138 return self.rml.sect(title, rml_string)
139
140 - def serveur(self, id_serveur):
141 """Description détaillée d'un serveur 142 """ 143 title = "Description du serveur : %s" % self.connect.nom_serveur(id_serveur) 144 serveur = self.connect.get_serveur(id_serveur) 145 146 # rml = self.rml.dict_to_list(serveur) 147 148 dict_materiel = { 149 'materiel': serveur['materiel'], 150 'processeur': serveur['processeur'], 151 'disque_dur': serveur['disque_dur'] 152 } 153 154 materiel = """<para> 155 <i>materiel</i> : %(materiel)s , 156 <i>processeur</i> : %(processeur)s, 157 <i>disque dur</i> : %(disque_dur)s 158 </para> 159 """ % dict_materiel 160 161 dict_module = { 162 'module_actuel': serveur['module_actuel'], 163 'module_initial' : serveur['module_initial'], 164 'variante':serveur['variante'] 165 } 166 167 module = """<para> 168 <i>module initial </i> : %(module_initial)s, 169 <i>module actuel installé </i> : %(module_actuel)s, 170 <i>variante du module installé </i> : %(variante)s 171 </para> 172 """ % dict_module 173 174 dict_description = { 175 'installateur': serveur['installateur'], 176 'tel': serveur['tel'], 177 'remarques' : serveur['remarques'], 178 'date_install': serveur['date_install'], 179 'rne': serveur['rne'] 180 } 181 182 description = """<para> 183 <i>installateur</i> : %(installateur)s, 184 <i>rne établissement</i> : %(rne)s, 185 <i>contact téléphonique</i> : %(tel)s, 186 <i>date d'installation</i> : %(date_install)s, 187 <i>remarques</i> : %(remarques)s 188 </para> 189 """ % dict_description 190 191 list = [description, materiel, module] 192 xml = "".join(list) 193 194 return self.rml.sect(title, xml)
195
196 - def pdf(self, method_name, param=""):
197 """hack d'éval pour éviter les hooks 198 """ 199 method = "self." + method_name + "(" + param + ")" 200 xml = self.rml.page("Bilan de l'état du Zéphir", eval(method)) 201 pdf = self.rml.dump_pdf(xml) 202 return self.pdf_file(pdf)
203 204 if __name__ == "__main__": 205 """ 206 Si le module est exécuté tel quel, 207 un rappport générique est créé dans le répertoire temporaire 208 """ 209 r = Rapport() 210 r.rapport_global() 211 # print r.pdf("modules") 212 # r.pdf("variante_module",1) 213 # r.pdf("detail_etabs") 214 # print r.pdf("detail_etab","'0210056X'") 215