1
2
3
4
5
6
7
8
9
10
11
12
13 """module de gestion des services
14 """
15 from zephir.backend.db_utils import *
16 from zephir.backend import config
17 from zephir.backend.config import u
18 from zephir.backend.xmlrpceole import XMLRPCEole as XMLRPC
19
20 import sys,os,shutil
21
23 """serveur XMLRPC zephir pour la gestion des bases de données
24 """
25
27 self.dbpool = db_connect()
28 self.dbpool.noisy = 0
29 XMLRPC.__init__(self)
30 self.parent = parent
31
32
34 """Récupération des services du backend
35 """
36 l=[]
37 for service in services:
38 l.append({'id' : service[0], 'module' : service[1], 'libelle' : service[2]})
39 return 1,u(l)
40
42 """Récupération des services du backend
43 """
44 l=[]
45 for service in services_installes:
46 l.append({'id_serveur' : service[0], 'id_service' : service[1]})
47 return 1,u(l)
48
50 """ajoute un service à un module"""
51
52 if (libelle and module):
53 query = """insert into services (module,libelle) values (%s,%s)"""
54
55 return self.dbpool.runOperation(query, (int(module), libelle)).addCallbacks(self._add_service,db_client_failed,callbackArgs=[module,libelle])
56 else:
57
58 return 0,u("""donnez un id de module et un libellé""")
59
61 """récupère l'id attribué au service créé"""
62
63 query = """select id from services where module=%s and libelle=%s"""
64 return self.dbpool.runQuery(query, (int(module), libelle)).addCallbacks(lambda x:(1,x[0][0]),db_client_failed)
65
67 """suppression d'un service"""
68 if id_service:
69 query = """delete from services where id=%s"""
70
71 return self.dbpool.runOperation(query, (int(id_service),)).addCallbacks(lambda x:(1,'ok'), db_client_failed)
72 else:
73 return 0,u("""donnez un id de service""")
74
76 """liste d'un service particulier (de tous les services)"""
77 if id_service :
78 query= """select * from services where id = %s"""
79 return self.dbpool.runQuery(query, (int(id_service),)).addCallbacks(self._got_service,db_client_failed)
80 else :
81 query= """select * from services"""
82 return self.dbpool.runQuery(query).addCallbacks(self._got_service,db_client_failed)
83
85 """liste des services d'un module (de tous les services)"""
86 if id_module :
87 query= """select * from services where module = %s""" % id_module
88 return self.dbpool.runQuery(query, (int(id_module),)).addCallbacks(self._got_service,db_client_failed)
89 else :
90 query= """select * from services"""
91 return self.dbpool.runQuery(query).addCallbacks(self._got_service,db_client_failed)
92
93
95 """modification d'un service
96 cette fonction prend en compte un dictionnaire qui indique les
97 champs à modifier et leur nouvelle valeur. l'application cliente
98 doit s'assurer que ces champs existent dans la base"""
99
100 if dico_modifs == {}:
101 return 1,u("""aucune modification demandée""")
102 if ('id' in dico_modifs.keys()) or ('module' in dico_modifs.keys()):
103 return 0,u("""l'identifiant et le module ne peuvent pas être modifiés""")
104
105 requete = ["update services set "]
106 params = []
107 for cle in dico_modifs.keys():
108 requete.append(str(cle))
109 requete.append("=%s, ")
110 params.append(str(dico_modifs[cle]))
111 string_fin=""" where id=%s"""
112 params.append(int(id_service))
113 query="".join(requete)[:-2]
114 query += string_fin
115 return self.dbpool.runOperation(query, params).addCallbacks(lambda x:(1,'ok'), db_client_failed)
116
117
118
119
120
121
123 """ajout d'un serveur a un établissement"""
124
125 if id_service and id_serveur:
126 query = """insert into services_installes (id_service,id_serveur) values (%s,%s)"""
127
128 params = (int(id_service), int(id_serveur))
129 return self.dbpool.runOperation(query, params).addCallbacks(lambda x:(1,'ok'), db_client_failed)
130 else:
131
132 return 0,u("""donnez un id de service et un id de serveur""")
133
135 """suppression d'un service"""
136 if id_service and id_serveur:
137 query = """delete from services_installes where id_serveur = %s and id_service = %s"""
138
139 params = (int(id_serveur), int(id_service))
140 return self.dbpool.runOperation(query).addCallbacks(lambda x:(1,'ok'), db_client_failed)
141 else:
142
143 return 0,u("""donnez un id de service et un id de serveur""")
144
146 """liste des services installés sur un serveur"""
147 if id_serveur:
148 query = """select * from services_installes where id_serveur = %s"""
149 return self.dbpool.runQuery(query, (int(id_serveur),)).addCallbacks(self._got_service_installe,db_client_failed)
150 else :
151 query = """select * from services_installes"""
152 return self.dbpool.runQuery(query).addCallbacks(self._got_service_installe,db_client_failed)
153