1 import re
2 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
3 from pyramid.view import view_config, forbidden_view_config
4 from pyramid.security import remember, forget, authenticated_userid
5 from sapproject.models.rol import *
6 from sapproject.models.usuario import *
7 from sapproject.models.rolusuario import *
8
9 @view_config(route_name='crear_rol_json', renderer='json')
10 -def crear_rol_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
20 model = Rol(nombre, descripcion)
21 DBSession.add(model)
22
23 return {'success' : True}
24
25 @view_config(route_name='modificar_rol_json', renderer='json')
26 -def modificar_rol_json(request):
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
37 model = Rol(nombre, descripcion)
38 model.id = id
39 DBSession.merge(model)
40 return {'success' : True}
41
42 @view_config(route_name='consultar_rol_json', renderer='json')
43 -def consultar_rol_json(request):
44 """
45 Nos permite traer los parametros de consulta(el filtro y el valor) y mostrar
46 los roles que cumplen con la condicion del filtro.
47 @param request: objeto que encapsula la peticion del servidor
48 @return: si la accion se realizo correctamente
49 """
50 usuarios = None
51 if 'filtro' in request.params:
52 filtro = request.params['filtro']
53 valor = request.params['valor']
54 sentencia = 'SELECT * from Rol WHERE {0}=\'{1}\''.format(filtro,valor)
55 roles = DBSession.query(Rol).from_statement(sentencia).all()
56 else:
57 roles = DBSession.query(Rol).all()
58
59 data = []
60 for rol in roles:
61 item = {}
62 item['id'] = rol.id
63 item['nombre'] = rol.nombre
64 item['descripcion'] = rol.descripcion
65 data.append(item)
66 return {'success':True, 'data':data, 'total':len(data)}
67
68 @view_config(route_name='eliminar_rol_json', renderer='json')
69 -def eliminar_rol_json(request):
70 """
71 Nos permite traer el id del rol a eliminar, eliminar las dependendcias
72 del mismo con respecto a otras tablas y eliminar el registro de la base de datos.
73 @param request: objeto que encapsula la peticion del servidor
74 @return: True si la accion se realizo correctamente y False en caso contrario
75 """
76
77 id = request.params['id']
78 rol = DBSession.query(Rol).filter_by(id=id).first()
79 if rol is None:
80 return {'success':False}
81 DBSession.delete(rol)
82 return {'success' : True}
83
86 """
87 Nos permite traer todos los roles asignados y asignables a un usuario
88 @param request: objeto que encapsula la peticion del servidor
89 @return: True si la accion se realizo correctamente, la lista de roles asignados al usuario y la lista de roles asignables al usuario
90 """
91 def process_rol_list(list):
92 """
93 Serializa una lista de con los datos de los roles para enviarla al cliente
94 @param list: lista de objectos Permiso obtenidas desde la BD
95 @return: result lista procesada de roles
96 """
97 result = []
98 for rol in list:
99 item = [None,None,None,None]
100 item[0] = rol.id
101 item[1] = rol.nombre
102 item[2] = rol.descripcion
103 result.append(item)
104 return result
105
106 id_usuario = request.params['id']
107
108
109 roles_asignados = [x.rol for x in DBSession.query(Usuario).filter_by(id=id_usuario).first().roles]
110
111 roles_asignables = DBSession.query(Rol).from_statement('select * from Rol where id not in (select idrol from RolUsuario where idusuario=\'{0}\')'.format(id_usuario)).all()
112
113 asignados = process_rol_list(roles_asignados)
114 asignables = process_rol_list(roles_asignables)
115
116 return {'success':True, 'asignados':asignados, 'asignables':asignables}
117
120 """
121 Nos permite asignar/desasignar roles a un usuario
122 @param request: objeto que encapsula la peticion del servidor
123 @return: True si la accion se realizo correctamente
124 """
125 received = eval(request.params['data'])
126
127 id_usuario = received['id_usuario']
128
129 data = received['data']
130
131
132 usuario = DBSession.query(Usuario).filter_by(id=id_usuario).first()
133
134 DBSession.query(RolUsuario).filter_by(idusuario=id_usuario).delete(synchronize_session=False)
135
136 DBSession.refresh(usuario);
137
138 for id_rol in data:
139 usuario.roles.append(RolUsuario(id_rol, id_usuario))
140
141 DBSession.merge(usuario)
142
143 return {'success':True}
144
147 """
148 Nos permite obtener la lista detallada de roles asignados a un usuario
149 @param request: objeto que encapsula la peticion del servidor
150 @return: True si la accion se realizo correctamente
151 """
152 id_usuario = request.params['id_usuario']
153 usuario = DBSession.query(Usuario).filter_by(id=id_usuario).first()
154 data = []
155 for rol in usuario.roles:
156 item = {}
157 item['id'] = rol.rol.id
158 item['nombre'] = rol.rol.nombre
159 item['descripcion'] = rol.rol.descripcion
160 data.append(item)
161 return {'success':True, 'data':data, 'total':len(data)}
162