Package sapproject :: Package views :: Module rol
[hide private]
[frames] | no frames]

Source Code for Module sapproject.views.rol

  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 #guardamos en la BD 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 # se modifica en la BD 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
84 @view_config(route_name='consulta_asignar_roles_json', renderer='json') 85 -def consulta_asignar_roles_json(request):
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 # Obtenemos la lista de roles que fueron asignados al usuario 108 # Roles es de tipo RolUsuario[] por tanto es necesario extraer el 'rol' de la relacion 109 roles_asignados = [x.rol for x in DBSession.query(Usuario).filter_by(id=id_usuario).first().roles] 110 # Obtenemos la lista de roles que no fueron asignados al usuario 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
118 @view_config(route_name='asignar_desasignar_rol_json', renderer='json') 119 -def asignar_desasignar_rol_json(request):
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 # id del usuario a asignar/desasignar roles 127 id_usuario = received['id_usuario'] 128 # ids de roles asignados 129 data = received['data'] 130 131 # obtenemos el usuario desde la BD 132 usuario = DBSession.query(Usuario).filter_by(id=id_usuario).first() 133 # eliminamos sus roles asignados anteriormente 134 DBSession.query(RolUsuario).filter_by(idusuario=id_usuario).delete(synchronize_session=False) 135 # actualizamos el usuario 136 DBSession.refresh(usuario); 137 # creamos una nueva lista de roles asignados 138 for id_rol in data: 139 usuario.roles.append(RolUsuario(id_rol, id_usuario)) 140 # guardamos los cambios 141 DBSession.merge(usuario) 142 143 return {'success':True}
144
145 @view_config(route_name='consulta_rol_x_usuario_json', renderer='json') 146 -def consulta_rol_x_usuario_json(request):
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