-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabase.py
159 lines (127 loc) · 5.21 KB
/
database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import json
from dtos import Usuario,Role,Permission,RolesPermissions, UsersRoles
class DatabaseManager:
"""
Clase que se encarga de gestionar las comunicaciones con la base de datos.
"""
Session = None
ses = None
def __init__(self, clave="Pruebas2013!"):
engine = create_engine("mysql://sibismark:" + clave + "@sibismark.db.10388322.hostedresource.com/sibismark" + "?charset=utf8", echo=False)
self.Session = sessionmaker(bind=engine)
self.ses = self.Session()
def obtenerDatos(self, tabla):
"""
Devuelve los datos de una tabla por medio de una lista.
Recibe como parámetro el nombre de la tabla a la cual acceder.
Retorna una lista de diccionarios cada uno lleno con conjuntos clave-valor
que hacen referencia a los atributos de los objetos dto propios de la
consulta
"""
lista = []
consulta = None
if tabla.lower() == "users":
consulta = self.ses.query(Usuario)
elif tabla.lower() == "permissions":
consulta = self.ses.query(Permission)
elif tabla.lower() == "roles":
consulta = self.ses.query(Role)
for instancia in consulta:
diccionario = instancia.toDict()
lista.append(diccionario)
return lista
def crearUsuario(self, nombre, apellido, username, email, password, roles):
usuario = Usuario(nombre, apellido, username, email, password)
self.ses.add(usuario)
self.ses.commit()
if type(roles) == list:
for id in roles:
relacion = UsersRoles(usuario.id, id)
self.ses.add(relacion)
else:
relacion = UsersRoles(usuario.id, roles)
self.ses.add(relacion)
self.ses.commit()
print type(roles)
def crearRol(self, nombre, descripcion, permisos):
rol = Role(nombre, descripcion)
self.ses.add(rol)
self.ses.commit()
if type(permisos) == list:
for id in permisos:
relacion = RolesPermissions(rol.id, id)
self.ses.add(relacion)
else:
relacion = RolesPermissions(rol.id, permisos)
self.ses.add(relacion)
self.ses.commit()
def crearPermiso(self, nombre, descripcion):
permiso = Permission(nombre, descripcion)
self.ses.add(permiso)
self.ses.commit()
def eliminar(self, modulo, id):
"""
Elimina un registro de la base de datos.
Recibe como parámetro el nmbre del módulo del cual se está accediendo.
Retorna un mesaje con el estado de la transacción.
"""
if modulo == "permisos":
instancia = self.ses.query(Permission).filter_by(id=id).first()
elif modulo == "roles":
instancia = self.ses.query(Role).filter_by(id=id).first()
elif modulo == "usuarios":
instancia = self.ses.query(Usuario).filter_by(id=id).first()
retorno = "El registro %s fué eliminado" % id
try:
self.ses.delete(instancia)
self.ses.commit()
except Exception, e:
retorno = "Ha ocurrido un error al intentar eliminar:", e
return retorno
def update(self, id,diccionario):
instancia = None
modulo = "usuarios"
if modulo == "permisos":
instancia = self.ses.query(Permission).filter_by(id=id).first()
elif modulo == "roles":
instancia = self.ses.query(Role).filter_by(id=id).first()
elif modulo == "usuarios":
instancia = self.ses.query(Usuario).filter_by(id=id).first()
retorno = "El registro %s fué actualizado" % id
instancia.update(diccionario)
self.ses.add(instancia)
self.ses.commit()
# except Exception, e:
# retorno = "Ha ocurrido un error al intentar eliminar:", e
return retorno
def obtenerDatosJson(self, tabla):
"""
Devuelve los datos de una tabla por medio de un diccionario.
Recibe como parámetro el nombre de la tabla a la cual acceder.
Retorna un diccionario de diccionarios cada uno lleno con conjuntos clave-valor
que hacen referencia a los atributos de los objetos dto propios de la
consulta y con clave igual al id de objeto.
"""
lista=[]
# diccionario = {}
consulta = None
if tabla.lower() == "users":
consulta = self.ses.query(Usuario)
elif tabla.lower() == "permissions":
consulta = self.ses.query(Permission)
elif tabla.lower() == "roles":
consulta = self.ses.query(Role)
for instancia in consulta:
dicTemp = instancia.toDict()
lista.append(dicTemp)
# id=dicTemp["id"]
#del dicTemp["id"]
#diccionario[id]=dicTemp
return lista
if __name__ == "__main__":
dbmm = DatabaseManager()
hola='{"valores":'+json.dumps(dbmm.obtenerDatosJson("users"),ensure_ascii=False).encode("utf-8")+"}"
print hola