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