def update(self, **kw): """Metodo que actualiza la base de datos""" try: tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item']) tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] tipo_item.id_fase = kw['id_fase'] DBSession.flush() transaction.commit() fase = DBSession.query(Fase).get(kw['id_fase']) id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def editar(self, id_tipo_item, **kw): """Metodo que rellena el formulario para editar los datos de un usuario""" try: tmpl_context.form = editar_tipo_item_form tipo_item = DBSession.query(TipoItem).get(id_tipo_item) id_fase = tipo_item.id_fase fase = DBSession.query(Fase).get(id_fase) id_proyecto = fase.id_proyecto proyecto = DBSession.query(Proyecto).get(id_proyecto) if proyecto.iniciado == True: flash(_("Proyecto ya iniciado. No puede editar Tipo de Item!"), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) traertipo_item = DBSession.query(TipoItem).get(id_tipo_item) kw['id_tipo_item'] = traertipo_item.id_tipo_item kw['nombre'] = traertipo_item.nombre kw['codigo'] = traertipo_item.codigo kw['descripcion'] = traertipo_item.descripcion kw['id_fase'] = traertipo_item.id_fase except SQLAlchemyError: flash(_("No se pudo acceder a Edicion de Tipo de Item! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se pudo acceder a Edicion de Tipo de Item! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) return dict(nombre_modelo='Tipo Item', id_proyecto=id_proyecto, id_fase=id_fase, page='editar', value=kw)
def eliminar_rol_usuario(self, id_usuario, id_rol, **kw): """Metodo que elimina un rol al usuario seleccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) if rol.usuarios.count(usuario) >= 1: rol.usuarios.remove(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo Desasignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/roles", id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Desasignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/usuario/roles", id_usuario=id_usuario) except (AttributeError, NameError): flash(_("No se pudo Desasignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/roles", id_usuario=id_usuario) else: flash(_("Rol desasignado!"), 'ok') redirect("/admin/usuario/roles", id_usuario=id_usuario)
def listado(self, page=1): """Metodo para listar todos los Proyectos existentes de la base de datos""" try: proyectos = [] if predicates.has_permission('administracion'): proyectos = DBSession.query(Proyecto).order_by( Proyecto.id_proyecto) elif predicates.has_permission('lider_proyecto'): usuario = DBSession.query(Usuario).filter_by( nombre_usuario=request.identity['repoze.who.userid'] ).first() proyectos = usuario.proyectos currentPage = paginate.Page(proyectos, page, items_per_page=10) except SQLAlchemyError: flash(_("No se pudo acceder a Proyectos! SQLAlchemyError..."), 'error') redirect("/admin") except (AttributeError, NameError): flash( _("No se pudo acceder a Proyectos! Hay Problemas con el servidor..." ), 'error') redirect("/admin") return dict(proyectos=currentPage.items, page='listado_proyecto', currentPage=currentPage)
def editar(self, id_proyecto, id_fase, **kw): """Metodo que rellena el formulario para editar los datos de una Fase""" try: tmpl_context.form = editar_fase_form proyecto = DBSession.query(Proyecto).get(id_proyecto) if proyecto.iniciado == True: flash(_("Proyecto ya iniciado. No puede editar fases!"), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) traerFase=DBSession.query(Fase).get(id_fase) kw['id_fase']=traerFase.id_fase kw['id_estado_fase']=traerFase.id_estado_fase kw['id_proyecto']=traerFase.id_proyecto kw['nombre']=traerFase.nombre kw['descripcion']=traerFase.descripcion kw['numero_fase']=traerFase.numero_fase except SQLAlchemyError: flash(_("No se pudo acceder a Edicion de Fases! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash(_("No se pudo acceder a Edicion de Fases! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) return dict(nombre_modelo='Fase', page='editar_fase', value=kw)
def nuevoDesdeTipoItem(self, id_tipo_item, **kw): """Despliega el formulario para añadir un nuevo atributo.""" try: tmpl_context.form = crear_atributo_form tipo_item = DBSession.query(TipoItem).get(id_tipo_item) id_fase = tipo_item.id_fase fase = DBSession.query(Fase).get(id_fase) id_proyecto = fase.id_proyecto kw['id_tipo_item'] = id_tipo_item except SQLAlchemyError: flash( _("No se pudo acceder a Creacion de Atributo! SQLAlchemyError..." ), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except (AttributeError, NameError): flash( _("No se pudo acceder a Creacon de Atributo! Hay Problemas con el servidor..." ), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) return dict(nombre_modelo='Atributo', page='nuevo_atributo', id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item, value=kw)
def agregarPermisoFase(self, id_usuario, id_rol, id_proyecto, id_fase, page=1): """Metodo que permite listar los roles que se pueden agregar al usuario seleccionado""" try: roles = DBSession.query(Rol).get(id_rol) fase = DBSession.query(Fase).get(id_fase) usuario = DBSession.query(Usuario).get(id_usuario) roles.fases.append(fase) usuario.fases.append(fase) except SQLAlchemyError: redirect("/admin/proyecto/listadoPermisoFase", id_proyecto=id_proyecto, id_usuario=id_usuario, id_rol=id_rol) except (AttributeError, NameError): flash( _("No se pudo acceder a Agregar Roles! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listadoPermisoFase", id_proyecto=id_proyecto, id_usuario=id_usuario, id_rol=id_rol) redirect("/admin/proyecto/listadoPermisoFase", id_proyecto=id_proyecto, id_usuario=id_usuario, id_rol=id_rol)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: tipo_item = TipoItem() tipo_item.id_fase = kw['id_fase'] tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] DBSession.add(tipo_item) DBSession.flush() transaction.commit() fase = DBSession.query(Fase).get(kw['id_fase']) id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Tipo de Item creado!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def listadoPermisoFase(self, id_usuario, id_rol, id_proyecto, page=1): """Metodo que permite listar los roles que se pueden agregar al usuario seleccionado""" try: roles = DBSession.query(Rol).get(id_rol) rolesFases = roles.fases rolesFases1 = roles.fases proyecto = DBSession.query(Proyecto).get(id_proyecto) listaFases =[] for fase in rolesFases: if proyecto.fases.count(fase) == 0: rolesFases.remove(fase) for fase in proyecto.fases: if rolesFases1.count(fase) == 0: listaFases.append(fase) currentPage = paginate.Page(rolesFases, page, items_per_page=10) except SQLAlchemyError: flash(_("No se pudo acceder a Listado Fases! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except (AttributeError, NameError): flash(_("No se pudo acceder a Agregar Roles! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) return dict(rolesFases=currentPage.items, page='agregar_roles', currentPage=currentPage, id_usuario=id_usuario, id_proyecto=id_proyecto, fasesRestantes=listaFases, id_rol=id_rol)
def eliminar_usuario_proyecto(self, id_proyecto, id_usuario, **kw): """Metodo que elimina un usuario al proyecto seleccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) if usuario.proyectos.count(proyecto) >= 1: usuario.proyectos.remove(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se ha desasignado dicho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha desasignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se ha desasignado decho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) else: flash(_("Usuario desasignado!"), 'ok') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: usuario = Usuario() usuario.nombre = kw['nombre'] usuario.apellido = kw['apellido'] usuario.nombre_usuario = kw['nombre_usuario'] usuario.password = kw['password'] usuario.direccion = kw['direccion'] usuario.telefono = kw['telefono'] usuario.email = kw['email'] DBSession.add(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") else: flash(_("Usuario creado!"), 'ok') redirect("/admin/usuario/listado")
def iniciar(self, id_proyecto, **kw): """Metodo que da inicio a un proyecto""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) fases = proyecto.fases id_proyecto = proyecto.id_proyecto maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first() if maxnumerofase[0]==None: flash(_("El Proyecto se encuentra sin fases! No puede iniciar..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") else: proyecto.iniciado = True for fase in fases: if fase.numero_fase == 1: fase.id_estado_fase = '2' DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha realizado la inicializacion! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") except SQLAlchemyError: flash(_("No se ha realizado la inicializacion! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") except (AttributeError, NameError): flash(_("No se ha realizado la inicializacion! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") else: flash(_("Proyecto iniciado!"), 'ok') redirect("/admin/proyecto/listaProyectos_a_iniciar")
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: permiso = Permiso() permiso.nombre_permiso = kw['nombre_permiso'] permiso.descripcion = kw['descripcion'] DBSession.add(permiso) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/permiso/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/permiso/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/permiso/listado") else: flash(_("Permiso creado!"), 'ok') redirect("/admin/permiso/listado")
def update(self, **kw): """Metodo que actualiza la base de datos""" try: usuario = DBSession.query(Usuario).get(kw['id_usuario']) usuario.nombre = kw['nombre'] usuario.apellido = kw['apellido'] usuario.nombre_usuario = kw['nombre_usuario'] usuario.direccion = kw['direccion'] usuario.telefono = kw['telefono'] usuario.email = kw['email'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/usuario/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/usuario/listado")
def eliminarPermisoFase(self, id_usuario, id_rol, id_proyecto, id_fase, page=1): """Metodo que permite listar los roles que se pueden agregar al usuario seleccionado""" try: roles = DBSession.query(Rol).get(id_rol) fase = DBSession.query(Fase).get(id_fase) usuario = DBSession.query(Usuario).get(id_usuario) if roles.fases.count(fase) >= 1: roles.fases.remove(fase) if usuario.fases.count(fase) >= 1: usuario.fases.remove(fase) except SQLAlchemyError: flash(_("No se pudo acceder a Listado Fases! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listadoPermisoFase", id_proyecto=id_proyecto, id_usuario=id_usuario, id_rol=id_rol) except (AttributeError, NameError, ValueError): redirect("/admin/proyecto/listadoPermisoFase", id_proyecto=id_proyecto, id_usuario=id_usuario, id_rol=id_rol) redirect("/admin/proyecto/listadoPermisoFase", id_proyecto=id_proyecto, id_usuario=id_usuario, id_rol=id_rol)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: fase = Fase() fase.id_estado_fase=kw['id_estado_fase'] fase.id_proyecto = kw['id_proyecto'] fase.nombre = kw['nombre'] fase.descripcion = kw['descripcion'] fase.numero_fase = kw['numero_fase'] DBSession.add(fase) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Fase creada!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def nuevoDesdeProyecto(self, id_proyecto, **kw): """Despliega el formulario para añadir una fase al proyecto.""" try: tmpl_context.form = crear_fase_form proyecto = DBSession.query(Proyecto).get(id_proyecto) if proyecto.iniciado == True: flash(_("Proyecto ya iniciado. No puede crear fases!"), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first() kw['id_proyecto']=id_proyecto kw['id_estado_fase']=1 if maxnumerofase[0]==None: kw['numero_fase']=1 else: kw['numero_fase']=maxnumerofase[0] + 1 except SQLAlchemyError: flash(_("No se pudo acceder a Creacion de Fases! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash(_("No se pudo acceder a Creacion de Fases! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) return dict(nombre_modelo='Fase', idProyecto=id_proyecto, page='nuevo', value=kw)
def agregarRolUser(self, id_usuario, id_rol, id_proyecto): """Metodo que realiza la agregacion de un rol al usuario selecccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) rol.usuarios.append(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Asignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except (AttributeError, NameError): flash( _("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) else: flash(_("Rol asignado!"), 'ok') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario)
def listadoFasesPorProyecto(self, id_proyecto, page=1): """Metodo para listar las Fases de un proyecto """ try: fasesPorProyecto = DBSession.query(Fase).join( Fase.relacion_estado_fase).filter( Fase.id_proyecto == id_proyecto).options( contains_eager(Fase.relacion_estado_fase)).order_by( Fase.numero_fase) # fasesPorProyecto = DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).order_by(Fase.numero_fase) nombreProyecto = DBSession.query( Proyecto.nombre).filter_by(id_proyecto=id_proyecto).first() currentPage = paginate.Page(fasesPorProyecto, page, items_per_page=10) except SQLAlchemyError: flash( _("No se pudo acceder a Fases del Proyecto! SQLAlchemyError..." ), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash( _("No se pudo acceder a Fases del Proyecto! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listado") return dict(fasesPorProyecto=currentPage.items, page='listado_fases', nombre_proyecto=nombreProyecto, id_proyecto=id_proyecto, currentPage=currentPage)
def eliminar_usuario_proyecto(self, id_proyecto, id_usuario, **kw): """Metodo que elimina un usuario al proyecto seleccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) if usuario.proyectos.count(proyecto) >= 1: usuario.proyectos.remove(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha desasignado dicho Usuario! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha desasignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except (AttributeError, NameError): flash(_("No se ha desasignado decho Usuario! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) else: flash(_("Usuario desasignado!"), 'ok') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto)
def editar(self, id_proyecto, id_fase, **kw): """Metodo que rellena el formulario para editar los datos de una Fase""" try: tmpl_context.form = editar_fase_form proyecto = DBSession.query(Proyecto).get(id_proyecto) if proyecto.iniciado == True: flash(_("Proyecto ya iniciado. No puede editar fases!"), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) traerFase = DBSession.query(Fase).get(id_fase) kw['id_fase'] = traerFase.id_fase kw['id_estado_fase'] = traerFase.id_estado_fase kw['id_proyecto'] = traerFase.id_proyecto kw['nombre'] = traerFase.nombre kw['descripcion'] = traerFase.descripcion kw['numero_fase'] = traerFase.numero_fase except SQLAlchemyError: flash( _("No se pudo acceder a Edicion de Fases! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se pudo acceder a Edicion de Fases! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) return dict(nombre_modelo='Fase', page='editar_fase', value=kw)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: proyecto = Proyecto() proyecto.id_usuario=kw['id_usuario'] proyecto.nombre = kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.iniciado = kw['iniciado'] DBSession.add(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Proyecto creado!"), 'ok') redirect("/admin/proyecto/listado")
def update(self, **kw): """Metodo que actualiza la fase en la base de datos""" try: fase = DBSession.query(Fase).get(kw['id_fase']) fase.nombre = kw['nombre'] fase.numero_fase = kw['numero_fase'] fase.descripcion = kw['descripcion'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def eliminar_rol_permiso(self, id_rol, id_permiso, **kw): """Metodo que elimina un permiso al rol seleccionado""" try: permiso = DBSession.query(Permiso).get(id_permiso) rol = DBSession.query(Rol).get(id_rol) if permiso.roles.count(rol) >= 1: permiso.roles.remove(rol) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo desasignar el Permiso! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/permisos", id_rol=id_rol) except SQLAlchemyError: flash(_("No se pudo desasignar el Permiso! SQLAlchemyError..."), 'error') redirect("/admin/rol/permisos", id_rol=id_rol) except (AttributeError, NameError): flash(_("No se pudo desasignar el Permiso! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/permisos", id_rol=id_rol) except (ValueError): redirect("/admin/rol/permisos", id_rol=id_rol) else: flash(_("Permiso desasignado!"), 'ok') redirect("/admin/rol/permisos", id_rol=id_rol)
def confirmar_eliminar(self, id_proyecto, id_fase, **kw): """Despliega confirmacion de eliminacion""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) if proyecto.iniciado == True: flash(_("Proyecto ya iniciado. No puede eliminar fases!"), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) fase = DBSession.query(Fase).get(id_fase) except SQLAlchemyError: flash( _("No se pudo acceder a Eliminacion de Fases! SQLAlchemyError..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se pudo acceder a Eliminacion de Fases! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) return dict(nombre_modelo='Fase', page='eliminar_fase', value=fase)
def listado(self, id_item, id_proyecto, id_fase, id_tipo_item): """Metodo para listar todos los usuarios de la base de datos""" antecesores = DBSession.query(RelacionItem).filter_by( id_item2=id_item).filter_by(tipo="Antecesor-Sucesor").order_by( RelacionItem.id_item1) listaAntecesores = [] for antecesor in antecesores: item = DBSession.query(Item).get(antecesor.id_item1) ant = [antecesor, item] listaAntecesores.append(ant) hijos = DBSession.query(RelacionItem).filter_by( id_item1=id_item).filter_by(tipo="Padre-Hijo").order_by( RelacionItem.id_item2) listaHijos = [] for hijo in hijos: item1 = DBSession.query(Item).get(hijo.id_item2) hij = [hijo, item1] listaHijos.append(hij) fase = DBSession.query(Fase).get(id_fase) permisosFase = [] for rol in fase.roles: for permiso in rol.permisos: permisosFase.append(permiso.nombre_permiso) return dict(antecesores=listaAntecesores, hijos=listaHijos, idItemActual=id_item, id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item, permisosFase=permisosFase)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: fase = Fase() fase.id_estado_fase = kw['id_estado_fase'] fase.id_proyecto = kw['id_proyecto'] fase.nombre = kw['nombre'] fase.descripcion = kw['descripcion'] fase.numero_fase = kw['numero_fase'] DBSession.add(fase) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Fase creada!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def update(self, **kw): """Metodo que actualiza la base de datos""" try: usuario = DBSession.query(Usuario).get(kw['id_usuario']) usuario.nombre = kw['nombre'] usuario.apellido = kw['apellido'] usuario.nombre_usuario = kw['nombre_usuario'] usuario.direccion =kw['direccion'] usuario.telefono = kw['telefono'] usuario.email = kw['email'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/usuario/listado")
def listadoTipoItemPorFase(self, id_proyecto, id_fase, page=1): """Metodo para listar los Tipos de Items de una Fase """ try: tipoItemPorFase = DBSession.query(TipoItem).join( TipoItem.relacion_fase).filter( TipoItem.id_fase == id_fase).options( contains_eager(TipoItem.relacion_fase)).order_by( TipoItem.id_tipo_item) nombreFase = DBSession.query( Fase.nombre).filter_by(id_fase=id_fase).first() idProyectoFase = DBSession.query( Fase.id_proyecto).filter_by(id_fase=id_fase).first() currentPage = paginate.Page(tipoItemPorFase, page, items_per_page=10) except SQLAlchemyError: flash( _("No se pudo acceder a Tipo de Items de Fase! SQLAlchemyError..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se pudo acceder a Tipo de Items de Fase! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=id_proyecto) return dict(tipoItemPorFase=currentPage.items, page='listado', nombre_fase=nombreFase, id_proyecto=id_proyecto, id_fase=id_fase, currentPage=currentPage)
def confirmar_eliminar(self, id_proyecto, id_fase, id_tipo_item, **kw): """Despliega confirmacion de eliminacion""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) if proyecto.iniciado == True: flash( _("Proyecto ya iniciado. No puede eliminar Tipo de Item!"), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) tipo_item = DBSession.query(TipoItem).get(id_tipo_item) except SQLAlchemyError: flash( _("No se pudo acceder a Edicion de Tipo de Item! SQLAlchemyError..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash( _("No se pudo acceder a Edicion de Tipo de Item! Hay Problemas con el servidor..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) return dict(nombre_modelo='Tipo Item', page='editar', id_proyecto=id_proyecto, id_fase=id_fase, value=tipo_item)
def listadoAtributosPorTipoItem(self, id_proyecto, id_fase, id_tipo_item, page=1): """Metodo para listar todos los atributos de la base de datos""" try: atributos = DBSession.query(Atributo).filter_by( id_tipo_item=id_tipo_item).order_by(Atributo.id_atributo) currentPage = paginate.Page(atributos, page, items_per_page=10) tipo_item = DBSession.query(TipoItem).get(id_tipo_item) except SQLAlchemyError: flash( _("No se pudo acceder a Atributos de Tipo de Item! SQLAlchemyError..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash( _("No se pudo acceder a Atributos de Tipo de Item! Hay Problemas con el servidor..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) return dict(atributos=currentPage.items, page='listado_atributos', nombre_tipo_item=tipo_item.nombre, id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item, currentPage=currentPage)
def update(self, **kw): """Metodo que actualiza la base de datos""" try: proyecto = DBSession.query(Proyecto).get(kw['id_proyecto']) proyecto.id_usuario = kw['id_usuario'] proyecto.nombre=kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.inciado =kw['iniciado'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/proyecto/listado")
def eliminar_rol_usuario(self, id_usuario, id_rol, id_proyecto, **kw): """Metodo que elimina un rol al usuario seleccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) if rol.usuarios.count(usuario) >= 1: rol.usuarios.remove(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se pudo Desasignar Rol! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Desasignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except (AttributeError, NameError): flash( _("No se pudo Desasignar Rol! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) else: flash(_("Rol desasignado!"), 'ok') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario)
def rolProyecto(self, id_proyecto, page=1): """Metodo que permite listar los roles que se pueden agregar al proyecto seleccionado""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) id_proyecto = proyecto.id_proyecto rolesProyecto = proyecto.roles roles = DBSession.query(Rol).filter_by(tipo="Proyecto").order_by( Rol.id_rol).all() for rol in rolesProyecto: if roles.count(rol) >= 1: roles.remove(rol) currentPage = paginate.Page(roles, page, items_per_page=10) except SQLAlchemyError: flash( _("No se pudo acceder a Agregar Roles al Proyecto! SQLAlchemyError..." ), 'error') redirect("/admin/proyecto/roles", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se pudo acceder a Agregar Roles al Proyecto! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/roles", id_proyecto=id_proyecto) return dict(roles=currentPage.items, page='agregar_roles', currentPage=currentPage, id_proyecto=id_proyecto, proyecto=proyecto)
def listado_detalles_items_linea_base_historial(self, id_proyecto, id_fase, id_linea_base, id_item, version, page=1): """Metodo para listar todos los detalles de los items que pertenecen a la linea base""" item = DBSession.query(Item).get(id_item) version_actual = item.version detalles = [] if version == version_actual: detalles = DBSession.query(ItemDetalle).filter_by( id_item=id_item).order_by(ItemDetalle.id_item_detalle) if version < version_actual: detalles = DBSession.query(ItemDetalleHistorial).filter_by( id_item=id_item).filter_by(version=version).order_by( ItemDetalleHistorial.id_historial_item_detalle) currentPage = paginate.Page(detalles, page) return dict(detalles=currentPage.items, page='listado_detalles_items_linea_base_historial', id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base, id_item=id_item, version=version, currentPage=currentPage)
def update(self, **kw): """Metodo que actualiza la base de datos""" try: proyecto = DBSession.query(Proyecto).get(kw['id_proyecto']) proyecto.id_usuario = kw['id_usuario'] proyecto.nombre = kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.inciado = kw['iniciado'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/proyecto/listado")
def agregarUsuario(self, id_proyecto, id_usuario): """Metodo que realiza la agregacion de un usuario al proyecto selecccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) usuario.proyectos.append(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se ha asignado dicho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha asignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se ha asignado decho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) else: flash(_("Usuario asignado!"), 'ok') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto)
def usuarioProyecto(self, id_proyecto, page=1): """Metodo que permite listar los usuarios que se pueden agregar al proyecto seleccionado""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) id_proyecto = proyecto.id_proyecto usuariosProyecto = proyecto.usuarios usuarios = DBSession.query(Usuario).order_by( Usuario.id_usuario).all() for usuario in usuariosProyecto: if usuarios.count(usuario) >= 1: usuarios.remove(usuario) currentPage = paginate.Page(usuarios, page, items_per_page=10) except SQLAlchemyError: flash( _("No se pudo acceder a Agregar Usuarios al Proyecto! SQLAlchemyError..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se pudo acceder a Agregar Usuarios al Proyecto! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) return dict(usuarios=currentPage.items, page='agregar_usuarios', currentPage=currentPage, id_proyecto=id_proyecto, proyecto=proyecto)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: proyecto = Proyecto() proyecto.id_usuario = kw['id_usuario'] proyecto.nombre = kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.iniciado = kw['iniciado'] DBSession.add(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Proyecto creado!"), 'ok') redirect("/admin/proyecto/listado")
def listaProyectos_a_iniciar(self, page=1): """Metodo para listar todos los Proyectos a iniciar de la base de datos""" try: proy = DBSession.query(Proyecto).filter_by( iniciado=False).order_by(Proyecto.id_proyecto) usuario = DBSession.query(Usuario).filter_by( nombre_usuario=request.identity['repoze.who.userid']).first() proyectos = [] for p in proy: if usuario.proyectos.count(p) == 1: proyectos.append(p) currentPage = paginate.Page(proyectos, page, items_per_page=10) except SQLAlchemyError: flash(_("No se pudo acceder a Proyectos! SQLAlchemyError..."), 'error') redirect("/admin") except (AttributeError, NameError): flash( _("No se pudo acceder a Proyectos! Hay Problemas con el servidor..." ), 'error') redirect("/admin") return dict(proyectos=currentPage.items, page='listaProyectos_a_iniciar', currentPage=currentPage)
def listadoItemsParaAsignaraLineaBase(self, id_proyecto, id_fase, id_linea_base, page=1): """Metodo para listar todos los items a asignar a la linea base""" lineabase=DBSession.query(LineaBase).get(id_linea_base) if lineabase.estado=='Aprobado': flash(_("La Linea Base ya se encuentra aprobada"), 'warning') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase) linea_bases=DBSession.query(LineaBase).filter_by(id_fase=id_fase) itemsenLineaBase = [] for linea_base in linea_bases: itemsLineaBase = linea_base.items for itemLineaBase in itemsLineaBase: itemsenLineaBase.append(itemLineaBase) #items Contiene todos los items que se encuentran en la fase actual tipo_items=DBSession.query(TipoItem).filter_by(id_fase=id_fase) itemsDeFaseActual = [] for tipo_item in tipo_items: itemsTipoItem = DBSession.query(Item).filter_by(id_tipo_item=tipo_item.id_tipo_item).filter_by(vivo=True).filter_by(estado='Aprobado').order_by(Item.id_item) for itemTipoItem in itemsTipoItem: itemsDeFaseActual.append(itemTipoItem) items=itemsDeFaseActual if itemsenLineaBase != None: for item in itemsenLineaBase: if items.count(item) >= 1: items.remove(item) currentPage = paginate.Page(items, page) return dict(items=currentPage.items, page='listadoItemsParaAsignaraLineaBase', id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base, currentPage=currentPage)
def rolesProyectoUsuario(self, id_proyecto, id_usuario, page=1): """Metodo para listar todos los roles que tiene el usuario seleccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) rolesProyecto = DBSession.query(Rol).filter_by( tipo="Proyecto").all() roles = [] for rol in rolesProyecto: if usuario.roles.count(rol) == 1: roles.append(rol) currentPage = paginate.Page(roles, page, items_per_page=10) except SQLAlchemyError: flash( _("No se pudo acceder a Roles de Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except (AttributeError, NameError, ValueError): flash( _("No se pudo acceder a Roles de Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) return dict(roles=currentPage.items, page='rolesProyectoUsuario', currentPage=currentPage, usuario=usuario, id_proyecto=id_proyecto)
def nuevo(self, id_fase, **kw): """Despliega el formulario para añadir una linea base a la fase""" fase=DBSession.query(Fase).get(id_fase) #Comprobación de si el estado de la fase se encuentra en Con Lineas Bases if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases': flash(_("Todos los items de esta fase ya se encuentran en una Linea Base Aprobada"), 'warning') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=fase.id_proyecto, id_fase=id_fase) tipo_items=DBSession.query(TipoItem).filter_by(id_fase=id_fase) itemsDeFaseActual = [] for tipo_item in tipo_items: itemsTipoItem = DBSession.query(Item).filter_by(id_tipo_item=tipo_item.id_tipo_item).filter_by(vivo=True) for itemTipoItem in itemsTipoItem: itemsDeFaseActual.append(itemTipoItem) contador_items_en_fase_actual = 0 for item in itemsDeFaseActual: contador_items_en_fase_actual = contador_items_en_fase_actual + 1 #Comprobación de si existen items cargados para la fase actual if contador_items_en_fase_actual == 0: flash(_("Aun no existen items cargados para esta fase"), 'warning') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=fase.id_proyecto, id_fase=id_fase) kw['id_estado']= 'Desarrollo' kw['id_fase']= id_fase kw['version']= '1' tmpl_context.form = crear_linea_base_form return dict(nombre_modelo='LineaBase', id_proyecto=fase.id_proyecto, id_fase=id_fase, page='nuevo', value=kw)
def agregarRolUsuario(self, id_usuario, id_proyecto, page=1): """Metodo que permite listar los roles que se pueden agregar al usuario seleccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) rolesUsuario = usuario.roles rolesDB = DBSession.query(Rol).filter_by(tipo="Proyecto").all() roles = [] for rol in rolesDB: if rolesUsuario.count(rol) == 0: roles.append(rol) currentPage = paginate.Page(roles, page, items_per_page=10) except SQLAlchemyError: flash(_("No se pudo acceder a Agregar Roles! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/agregarRolUsuario", id_usuario=id_usuario, id_proyecto=id_proyecto) except (AttributeError, NameError, ValueError): flash( _("No se pudo acceder a Agregar Roles! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/agregarRolUsuario", id_usuario=id_usuario, id_proyecto=id_proyecto) return dict(roles=currentPage.items, page='agregar_roles', currentPage=currentPage, id_usuario=id_usuario, usuario=usuario, id_proyecto=id_proyecto)
def addHijo(self, **kw): self.insertarHijo(kw) DBSession.flush() redirect('listado', id_item=kw['id_item1'], id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'], id_tipo_item=kw['id_tipo_item'])
def listado_linea_bases(self, id_proyecto, id_fase, page=1): """Metodo para listar las lineas bases de una Fase """ fase = DBSession.query(Fase).get(id_fase) #linea_bases = fase.linea_bases linea_bases = DBSession.query(LineaBase).filter_by(id_fase=id_fase).order_by(LineaBase.id_linea_base) currentPage = paginate.Page(linea_bases, page, items_per_page=5) return dict(linea_bases=currentPage.items, page='listado_linea_bases', nombre_fase=fase.nombre, id_proyecto=id_proyecto, id_fase=id_fase, currentPage=currentPage)
def delete(self, id_proyecto, id_fase, id_tipo_item, **kw): """Metodo que elimina un registro de la base de datos""" try: atributos = DBSession.query(Atributo).filter_by(id_tipo_item=id_tipo_item).all() for atributo in atributos: DBSession.delete(DBSession.query(Atributo).get(atributo.id_atributo)) DBSession.delete(DBSession.query(TipoItem).get(id_tipo_item)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se ha eliminado! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Tipo de Item eliminado!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def asignarItem(self, id_proyecto, id_fase, id_linea_base, id_item): """Metodo que realiza la asignacion de un item a la linea base selecccionada""" linea_base=DBSession.query(LineaBase).get(id_linea_base) if linea_base.estado=='Aprobado': flash(_("La Linea Base esta Aprobada y no puede modificarse"), 'error') redirect("/admin/linea_base/listadoItemsParaAsignaraLineaBase",id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base) item = DBSession.query(Item).get(id_item) linea_base = DBSession.query(LineaBase).get(id_linea_base) item.linea_bases.append(linea_base) flash("Item Asignado a la Linea Base") redirect("/admin/linea_base/listadoItemsParaAsignaraLineaBase",id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base)
def fases(self,id_proyecto, page=1): """Metodo para listar las Fases de un proyecto """ proyecto = DBSession.query(Proyecto).get(id_proyecto) #fasesProyecto = proyecto.fases fasesProyecto = DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).order_by(Fase.id_fase) fases=[] for fase in fasesProyecto: if fase.id_estado_fase <> 1: fases.append(fase) currentPage = paginate.Page(fases, page, items_per_page=5) return dict(fases=currentPage.items, page='listado_fases', nombre_proyecto=proyecto.nombre, id_proyecto=proyecto.id_proyecto, currentPage=currentPage)
def historial_linea_bases(self, id_fase, id_linea_base, page=1): """Metodo para listar el historial de una linea base""" fase = DBSession.query(Fase).get(id_fase) id_proyecto=fase.id_proyecto linea_base = DBSession.query(LineaBase).get(id_linea_base) linea_bases = linea_base.linea_base_historial if linea_bases==[]: flash(_("La Linea Base no tiene historiales"), 'warning') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase) currentPage = paginate.Page(linea_bases, page, items_per_page=5) return dict(linea_bases=currentPage.items, page='historial_linea_bases', nombre_linea_base=linea_base.nombre, id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base, currentPage=currentPage)
def desasignar_item_linea_base(self, id_proyecto, id_fase, id_linea_base, id_item, **kw): """Metodo que desasigna un item de la linea base seleccionada""" linea_base=DBSession.query(LineaBase).get(id_linea_base) if linea_base.estado=='Aprobado': flash(_("La Linea Base esta Aprobada y no puede modificarse"), 'error') redirect("/admin/linea_base/listadoItemsPorLineaBase",id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base) item = DBSession.query(Item).get(id_item) linea_base = DBSession.query(LineaBase).get(id_linea_base) if item.linea_bases.count(linea_base) >= 1: item.linea_bases.remove(linea_base) flash("Item Desasignado de la Linea Base") redirect("/admin/linea_base/listadoItemsPorLineaBase", id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base)
def listado_detalles_items_linea_base_historial(self, id_proyecto, id_fase, id_linea_base, id_item, version, page=1): """Metodo para listar todos los detalles de los items que pertenecen a la linea base""" item=DBSession.query(Item).get(id_item) version_actual=item.version detalles=[] if version==version_actual: detalles = DBSession.query(ItemDetalle).filter_by(id_item=id_item).order_by(ItemDetalle.id_item_detalle) if version<version_actual: detalles = DBSession.query(ItemDetalleHistorial).filter_by(id_item=id_item).filter_by(version=version).order_by(ItemDetalleHistorial.id_historial_item_detalle) currentPage = paginate.Page(detalles, page) return dict(detalles=currentPage.items, page='listado_detalles_items_linea_base_historial', id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base, id_item=id_item, version=version, currentPage=currentPage)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ linea_base = LineaBase() linea_base.nombre = kw['nombre'] linea_base.descripcion = kw['descripcion'] linea_base.estado = kw['id_estado'] linea_base.id_fase = kw['id_fase'] linea_base.version = kw['version'] DBSession.add(linea_base) DBSession.flush() id_fase = kw['id_fase'] flash("Linea Base Generada") id_proyecto=DBSession.query(Fase.id_proyecto).filter_by(id_fase=id_fase).first() redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase)
def validate_python(self, value, state): usuarios = DBSession.query(Usuario) for usuario in usuarios: if value == usuario.nombre_usuario: raise Invalid( 'El nombre de usuario ya existe.', value, state)
def listadoFasesPorProyecto(self,id_proyecto, page=1): """Metodo para listar las Fases de un proyecto """ try: fasesPorProyecto = DBSession.query(Fase).join(Fase.relacion_estado_fase).filter(Fase.id_proyecto==id_proyecto).options(contains_eager(Fase.relacion_estado_fase)).order_by(Fase.numero_fase) # fasesPorProyecto = DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).order_by(Fase.numero_fase) nombreProyecto = DBSession.query(Proyecto.nombre).filter_by(id_proyecto=id_proyecto).first() currentPage = paginate.Page(fasesPorProyecto, page, items_per_page=10) except SQLAlchemyError: flash(_("No se pudo acceder a Fases del Proyecto! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se pudo acceder a Fases del Proyecto! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") return dict(fasesPorProyecto=currentPage.items, page='listado_fases', nombre_proyecto=nombreProyecto, id_proyecto=id_proyecto, currentPage=currentPage)
def update(self, **kw): """Metodo que actualiza la base de datos""" nombre_usuario = request.identity['repoze.who.userid'] usuario = DBSession.query(Usuario).filter_by(nombre_usuario=nombre_usuario).first() password_anterior = usuario.password password_anterior_form = kw['password_anterior_form'] password_nuevo = kw['password_nuevo'] password_nuevo_repeticion = kw['password_nuevo_repeticion'] #identity = request.environ.get('repoze.who.identity') #print identity hash = sha1() if isinstance(password_anterior_form, unicode): password_anterior_form = password_anterior_form.encode('utf-8') hash.update(password_anterior_form + str(password_anterior[:40])) result = password_anterior[40:] == hash.hexdigest() if result == True and password_nuevo == password_nuevo_repeticion: usuario.password = password_nuevo else: flash(_('Datos incorrectos'), 'warning') redirect("/otros/cambiar_contrasenha") flash("Su password se cambio con exito!") redirect("/otras_op")
def update(self, **kw): """Metodo que actualiza la base de datos""" linea_base = DBSession.query(LineaBase).get(kw['id_linea_base']) linea_base.nombre = kw['nombre'] linea_base.descripcion = kw['descripcion'] auxiliar = kw['estado'] if auxiliar=='Revision': auxiliar='Desarrollo' linea_base.estado = auxiliar linea_base.id_fase = kw['id_fase'] linea_base.version = kw['version'] id_fase = kw['id_fase'] DBSession.flush() id_proyecto=DBSession.query(Fase.id_proyecto).filter_by(id_fase=id_fase).first() flash("Linea Base Editada") redirect("/admin/linea_base/listado_linea_bases", id_proyecto=id_proyecto, id_fase=id_fase)
def listadoItemsPorLineaBase(self, id_proyecto, id_fase, id_linea_base, page=1): """Metodo para listar todos los items de la base de datos que pertenecen a la linea base""" linea_base=DBSession.query(LineaBase).get(id_linea_base) items = linea_base.items currentPage = paginate.Page(items, page) return dict(items=currentPage.items, page='listadoItemsPorLineaBase', id_proyecto=id_proyecto, id_fase=id_fase, id_linea_base=id_linea_base, currentPage=currentPage)