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

Source Code for Module sapproject.views.permiso

  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 # Se agrega a la BD 21 model = Permiso(nombre,descripcion,codificacion) 22 DBSession.add(model) 23 return {'success':True}
24
25 @view_config(route_name='modificar_permiso_json', renderer='json') 26 -def modificar_permiso_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 accion = request.params['accion'] 37 codificacion = request.params['codificacion'] # posible nueva accion 38 if accion != codificacion: 39 accion = codificacion 40 # Se modifica en la BD 41 model = Permiso(nombre,descripcion,accion) 42 model.id = id 43 DBSession.merge(model) 44 return {'success':True}
45
46 @view_config(route_name='eliminar_permiso_json', renderer='json') 47 -def eliminar_permiso_json(request):
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
61 @view_config(route_name='consultar_permiso_json', renderer='json') 62 -def consultar_permiso_json(request):
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
88 @view_config(route_name='consulta_acciones_json', renderer='json') 89 -def consulta_acciones_json(request):
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
108 @view_config(route_name='consulta_asignar_permisos_json', renderer='json') 109 -def consulta_asignar_permisos_json(request):
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 # Obtenemos la lista de permisos que fueron asignados al rol 133 # Permisos es de tipo RolPermiso[] por tanto es necesario extraer el 'permiso' de la relacion 134 permisos_asignados = [x.permiso for x in DBSession.query(Rol).filter_by(id=id_rol).first().permisos] 135 # Obtenemos la lista de permisos que no fueron asignados al rol 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
143 @view_config(route_name='asignar_desasignar_permiso_json', renderer='json') 144 -def asignar_desasignar_permiso_json(request):
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 # id del rol a asignar/desasignar roles 152 id_rol = received['id_rol'] 153 # ids de permisos asignados 154 data = received['data'] 155 156 # obtenemos el rol desde la BD 157 rol = DBSession.query(Rol).filter_by(id=id_rol).first() 158 # eliminamos sus permisos asignados anteriormente 159 DBSession.query(RolPermiso).filter_by(idrol=id_rol).delete(synchronize_session=False) 160 # actualizamos el rol 161 DBSession.refresh(rol); 162 # creamos una nueva lista de permisos asignados 163 for id_permiso in data: 164 rol.permisos.append(RolPermiso(id_rol, id_permiso)) 165 # guardamos los cambios 166 DBSession.merge(rol) 167 168 return {'success':True}
169
170 @view_config(route_name='consulta_permiso_x_rol_json', renderer='json') 171 -def consulta_permiso_x_rol_json(request):
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