Package zephir :: Package backend :: Module services_rpc
[frames] | no frames]

Source Code for Module zephir.backend.services_rpc

  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  # services_rpc.py 
  9  #   
 10  # fonctions xmlrpc pour la gestion des services dans Zephir 
 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   
22 -class RPCServices(XMLRPC):
23 """serveur XMLRPC zephir pour la gestion des bases de données 24 """ 25
26 - def __init__(self,parent):
27 self.dbpool = db_connect() 28 self.dbpool.noisy = 0 29 XMLRPC.__init__(self) 30 self.parent = parent
31 32
33 - def _got_service(self, services):
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
41 - def _got_service_installe(self, services_installes):
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
49 - def xmlrpc_add_service(self,cred_user, module, libelle):
50 """ajoute un service à un module""" 51 # on vérifie qu'on a bien récupéré un serveur 52 if (libelle and module): 53 query = """insert into services (module,libelle) values (%s,E%s)""" 54 # on effectue l'insertion (l'existence est à tester dans l'application cliente) 55 return self.dbpool.runOperation(query, (int(module), libelle)).addCallbacks(self._add_service,db_client_failed,callbackArgs=[module,libelle]) 56 else: 57 # des attributs manquent 58 return 0,u("""donnez un id de module et un libellé""")
59
60 - def _add_service(self,resultat,module,libelle):
61 """récupère l'id attribué au service créé""" 62 # on retourne l'id du service créé 63 query = """select id from services where module=%s and libelle=E%s""" 64 return self.dbpool.runQuery(query, (int(module), libelle)).addCallbacks(lambda x:(1,x[0][0]),db_client_failed)
65
66 - def xmlrpc_del_service(self,cred_user,id_service):
67 """suppression d'un service""" 68 if id_service: 69 query = """delete from services where id=%s""" 70 # suppression du service dans la base de données 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
75 - def xmlrpc_get_service(self,cred_user,id_service=None):
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
84 - def xmlrpc_get_service_module(self,cred_user,id_module=None):
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
94 - def xmlrpc_edit_service(self,cred_user,id_service,dico_modifs):
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 # on vérifie que l'identifiant n'est pas modifié 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 # construction de la requête SQL de modification 105 requete = ["update services set "] 106 params = [] 107 for cle in dico_modifs.keys(): 108 requete.append(str(cle)) 109 requete.append("=E%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 ## gestion des services **installes** sur un serveur 120 #################################################### 121
122 - def xmlrpc_add_service_installe(self,cred_user, id_service=None, id_serveur=None):
123 """ajout d'un serveur a un établissement""" 124 # on vérifie qu'on a bien récupéré un serveur et un service 125 if id_service and id_serveur: 126 query = """insert into services_installes (id_service,id_serveur) values (%s,%s)""" 127 # on effectue l'insertion (l'existence est à tester dans l'application cliente) 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 # des attributs manquent 132 return 0,u("""donnez un id de service et un id de serveur""")
133
134 - def xmlrpc_del_service_installe(self,cred_user,id_service=None,id_serveur=None):
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 # on récupère les services de ce serveur 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 # paramètres manquants 143 return 0,u("""donnez un id de service et un id de serveur""")
144
145 - def xmlrpc_get_service_installe(self,cred_user,id_serveur=None):
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