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

Source Code for Module sapproject.views.proyecto

  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.proyecto import * 
  6  from sapproject.models.proyectousuario import * 
  7  from sapproject.models.proyectousuariorol import * 
8 9 @view_config(route_name='crear_proyecto_json', renderer='json') 10 -def crear_proyecto_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 fechainicio = request.params['fechainicio'] 20 fechafin = request.params['fechafin'] 21 estado = request.params['estado'] 22 observaciones = request.params['observaciones'] 23 #with transaction.manager: 24 model = Proyecto(nombre, descripcion, fechainicio, fechafin, estado, observaciones) 25 DBSession.add(model) 26 # DBSession.commit() 27 28 return {'success' : True}
29
30 @view_config(route_name='modificar_proyecto_json', renderer='json') 31 -def modificar_proyecto_json(request):
32 """ 33 Nos permite traer los parametros que fueron modificados por el usuario 34 y guardar los cambios en la base de datos. 35 @param request: objeto que encapsula la peticion del servidor 36 @return: True si la accion se realizo correctamente 37 """ 38 id = request.params['id'] 39 nombre = request.params['nombre'] 40 descripcion = request.params['descripcion'] 41 fechainicio = request.params['fechainicio'] 42 fechafin = request.params['fechafin'] 43 estado = request.params['estado'] 44 observaciones = request.params['observaciones'] 45 # se modifica en la BD 46 model = Proyecto(nombre, descripcion, fechainicio, fechafin, estado, observaciones) 47 model.id = id 48 DBSession.merge(model) 49 return {'success' : True}
50
51 @view_config(route_name='eliminar_proyecto_json', renderer='json') 52 -def eliminar_proyecto_json(request):
53 """ 54 Nos permite traer el id del proyecto a eliminar, eliminar las dependendcias 55 del mismo con respecto a otras tablas y eliminar el registro de la base de datos. 56 @param request: objeto que encapsula la peticion del servidor 57 @return: True si la accion se realizo correctamente y False en caso contrario 58 """ 59 id = request.params['id'] 60 proyecto = DBSession.query(Proyecto).filter_by(id=id).first() 61 if proyecto is None: 62 return {'success':False} 63 DBSession.delete(proyecto) 64 return {'success' : True}
65
66 67 @view_config(route_name='consultar_proyecto_json', renderer='json') 68 -def consultar_proyecto_json(request):
69 """ 70 Nos permite traer los parametros de consulta(el filtro y el valor) y mostrar 71 los proyectos que cumplen con la condicion del filtro. 72 @param request: objeto que encapsula la peticion del servidor 73 @return: True si la accion se realizo correctamente 74 """ 75 usuarios = None 76 if 'filtro' in request.params: 77 filtro = request.params['filtro'] 78 valor = request.params['valor'] 79 sentencia = 'SELECT * from Proyecto WHERE {0}=\'{1}\''.format(filtro,valor) 80 proyectos = DBSession.query(Proyecto).from_statement(sentencia).all() 81 else: 82 proyectos = DBSession.query(Proyecto).all() 83 84 data = [] 85 for proyecto in proyectos: 86 item = {} 87 item['id'] = proyecto.id 88 item['nombre'] = proyecto.nombre 89 item['descripcion'] = proyecto.descripcion 90 item['fechainicio'] = str(proyecto.fechainicio) 91 item['fechafin'] = str(proyecto.fechafin) 92 item['estado'] = proyecto.estado 93 data.append(item) 94 return {'success':True, 'data':data, 'total':len(data)}
95
96 @view_config(route_name='asignar_usuario_rol_proyecto_json', renderer='json') 97 -def asignar_usuario_rol_proyecto_json(request):
98 """ 99 Nos permite realizar la asignacion de un usuario a un proyecto 100 @param request: objeto que encapsula la peticion del servidor 101 @return: True si la accion se realizo correctamente 102 """ 103 # id del proyecto al que se le asigna un usuario 104 id_proyecto = request.params['id_proyecto'] 105 # id del usuario a asignar 106 id_usuario = request.params['id_usuario'] 107 # lista de id de roles del usuario en el proyecto 108 id_roles = eval(request.params['id_roles']) 109 110 # obtenemos el proyecto desde la BD 111 proyecto = DBSession.query(Proyecto).filter_by(id=id_proyecto).first() 112 # eliminamos las relaciones con el usuario en la tabla 'proyectousuario' 113 DBSession.query(ProyectoUsuario).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).delete(synchronize_session=False) 114 # eliminamos las relaciones con el usuario en la tabla 'proyectousuariorol' 115 DBSession.query(ProyectoUsuarioRol).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).delete(synchronize_session=False) 116 # actualizamos el proyecto 117 DBSession.refresh(proyecto) 118 # creamos una nueva asignacion proyecto-usuario en la tabla 'proyectousuario' 119 proyecto.usuarios.append(ProyectoUsuario(id_proyecto, id_usuario)) 120 # creamos una nueva lista de usuarios asignados (con sus roles) al proyecto en la tabla 'proyectousuariorol' 121 for id_rol in id_roles: 122 proyecto.usuarios_x_rol.append(ProyectoUsuarioRol(id_proyecto,id_usuario, id_rol)) 123 124 # guardamos los cambios 125 DBSession.merge(proyecto) 126 127 return {'success':True}
128
129 @view_config(route_name='desasignar_usuario_rol_proyecto_json', renderer='json') 130 -def desasignar_usuario_rol_proyecto_json(request):
131 """ 132 Nos permite realizar la desasignacion de un usuario de un proyecto 133 @param request: objeto que encapsula la peticion del servidor 134 @return: True si la accion se realizo correctamente 135 """ 136 id_proyecto = request.params['id_proyecto'] 137 id_usuario = request.params['id_usuario'] 138 proyecto_actual = request.params['proyecto_actual'] 139 140 # eliminamos las relaciones con el usuario en la tabla 'proyectousuario' 141 DBSession.query(ProyectoUsuario).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).delete(synchronize_session=False) 142 # eliminamos las relaciones con el usuario en la tabla 'proyectousuariorol' 143 DBSession.query(ProyectoUsuarioRol).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).delete(synchronize_session=False) 144 return {'success':True}
145 146 # ELIMINACION CON COMPROBACION (POR QUE NO ANDA) 147 # obtenemos el proyecto desde la BD 148 # proyecto_usuario = DBSession.query(ProyectoUsuario).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).first() 149 # Comprobamos que no tratemos de desasignarnos de nuestro proyecto actual 150 # if proyecto_usuario is None: 151 # podemos desasignar al usuario 152 # eliminamos las relaciones con el usuario en la tabla 'proyectousuario' 153 # DBSession.query(ProyectoUsuario).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).delete(synchronize_session=False) 154 # eliminamos las relaciones con el usuario en la tabla 'proyectousuariorol' 155 # DBSession.query(ProyectoUsuarioRol).filter_by(idproyecto=id_proyecto,idusuario=id_usuario).delete(synchronize_session=False) 156 # return {'success':True} 157 # imposible de desasignar al usuario 158 #return {'success':False} 159