1 import re
2 from pyramid.view import view_config
3 from pyramid.security import authenticated_userid
4
5 from sapproject.models.rol import *
6 from sapproject.models.permiso import *
7 from sapproject.models.rolpermiso import *
8
9 @view_config(route_name='crear_permiso_json', renderer='json')
10 -def crear_permiso_json(request):
11 """
12 Nos permite traer los parametros que fueron cargados por el usuario
13 y guardarlos en la base de datos.
14 @param request: objeto que encapsula la peticion del servidor
15 @return: True si la accion se realizo correctamente
16 """
17 nombre = request.params['nombre']
18 descripcion = request.params['descripcion']
19 codificacion = request.params['codificacion']
20
21 model = Permiso(nombre,descripcion,codificacion)
22 DBSession.add(model)
23 return {'success':True}
24
27 """
28 Nos permite traer los parametros que fueron modificados por el usuario
29 y guardar los cambios en la base de datos.
30 @param request: objeto que encapsula la peticion del servidor
31 @return: True si la accion se realizo correctamente
32 """
33 id = request.params['id']
34 nombre = request.params['nombre']
35 descripcion = request.params['descripcion']
36 accion = request.params['accion']
37 codificacion = request.params['codificacion']
38 if accion != codificacion:
39 accion = codificacion
40
41 model = Permiso(nombre,descripcion,accion)
42 model.id = id
43 DBSession.merge(model)
44 return {'success':True}
45
48 """
49 Nos permite traer el id del permiso a eliminar, eliminar las dependendcias
50 del mismo con respecto a otras tablas y eliminar el registro de la base de datos.
51 @param request: objeto que encapsula la peticion del servidor
52 @return: True si la accion se realizo correctamente y False en caso contrario
53 """
54 id = request.params['id']
55 permiso = DBSession.query(Permiso).filter_by(id=id).first()
56 if permiso is None:
57 return {'success':False}
58 DBSession.delete(permiso)
59 return {'success' : True}
60
63 """
64 Nos permite traer los parametros de consulta(el filtro y el valor) y mostrar
65 los permisos que cumplen con la condicion del filtro.
66 @param request: objeto que encapsula la peticion del servidor
67 @return: si la accion se realizo correctamente
68 """
69 permisos = None
70 if 'filtro' in request.params:
71 filtro = request.params['filtro']
72 valor = request.params['valor']
73 sentencia = 'SELECT * from Permiso WHERE {0}=\'{1}\''.format(filtro,valor)
74 permisos = DBSession.query(Permiso).from_statement(sentencia).all()
75 else:
76 permisos = DBSession.query(Permiso).all()
77
78 data = []
79 for permiso in permisos:
80 item = {}
81 item['id'] = permiso.id
82 item['nombre'] = permiso.nombre
83 item['descripcion'] = permiso.descripcion
84 item['accion'] = permiso.accion
85 data.append(item)
86 return {'success':True, 'data':data, 'total':len(data)}
87
90 """
91 Nos permite traer todas las acciones posibles que pueden realizarce con los permisos
92 @param request: objeto que encapsula la peticion del servidor
93 @return: True si la accion se realizo correctamente, la cantidad de acciones y la lista de acciones
94 """
95 nombre_rol = request.params['rol']
96 rol = DBSession.query(Rol).filter_by(nombre=nombre_rol).first()
97 lista = rol.permisos
98 if len(lista) == 0:
99 return {'success':True, 'total':0}
100 else:
101 data = []
102 for p in lista:
103 item = {}
104 item['permiso'] = p.permiso.accion
105 data.append(item)
106 return {'success':True, 'total':len(data), 'data':data}
107
110 """
111 Nos permite traer todos los permisos asignados y asignables a un rol
112 @param request: objeto que encapsula la peticion del servidor
113 @return: True si la accion se realizo correctamente, la lista de permisos asignados al rol y la lista de permisos asignables al rol
114 """
115 def process_permiso_list(list):
116 """
117 Serializa una lista de con los datos de los permisos para enviarla al cliente
118 @param list: lista de objectos Permiso obtenidas desde la BD
119 @return: result lista procesada de permisos
120 """
121 result = []
122 for permiso in list:
123 item = [None,None,None,None]
124 item[0] = permiso.id
125 item[1] = permiso.nombre
126 item[2] = permiso.descripcion
127 item[3] = permiso.accion
128 result.append(item)
129 return result
130
131 id_rol = request.params['id']
132
133
134 permisos_asignados = [x.permiso for x in DBSession.query(Rol).filter_by(id=id_rol).first().permisos]
135
136 permisos_asignables = DBSession.query(Permiso).from_statement('select * from Permiso where id not in (select idpermiso from RolPermiso where idrol=\'{0}\')'.format(id_rol)).all()
137
138 asignados = process_permiso_list(permisos_asignados)
139 asignables = process_permiso_list(permisos_asignables)
140
141 return {'success':True, 'asignados':asignados, 'asignables':asignables}
142
145 """
146 Nos permite asignar/desasignar permisos a un rol
147 @param request: objeto que encapsula la peticion del servidor
148 @return: True si la accion se realizo correctamente
149 """
150 received = eval(request.params['data'])
151
152 id_rol = received['id_rol']
153
154 data = received['data']
155
156
157 rol = DBSession.query(Rol).filter_by(id=id_rol).first()
158
159 DBSession.query(RolPermiso).filter_by(idrol=id_rol).delete(synchronize_session=False)
160
161 DBSession.refresh(rol);
162
163 for id_permiso in data:
164 rol.permisos.append(RolPermiso(id_rol, id_permiso))
165
166 DBSession.merge(rol)
167
168 return {'success':True}
169
172 """
173 Nos permite obtener la lista detallada de permisos asignados a un rol
174 @param request: objeto que encapsula la peticion del servidor
175 @return: True si la accion se realizo correctamente
176 """
177 id_rol = request.params['id_rol']
178 rol = DBSession.query(Rol).filter_by(id=id_rol).first()
179 data = []
180 for permiso in rol.permisos:
181 item = {}
182 item['id'] = permiso.permiso.id
183 item['nombre'] = permiso.permiso.nombre
184 item['descripcion'] = permiso.permiso.descripcion
185 item['accion'] = permiso.permiso.accion
186 data.append(item)
187 return {'success':True, 'data':data, 'total':len(data)}
188