Esempio n. 1
0
    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)
Esempio n. 2
0
    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'])
Esempio n. 3
0
    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 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 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")
Esempio n. 6
0
    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 delete(self, id_proyecto, **kw):
        """Metodo que elimina un registro de la base de datos"""
        try:
            proyecto = DBSession.query(Proyecto).get(id_proyecto)
            fases = proyecto.fases

            for fase in fases:
                id_fase = fase.id_fase
                tipo_items = DBSession.query(TipoItem).filter_by(id_fase=id_fase).all()
                for tipo_item in tipo_items:
                    id_tipo_item = tipo_item.id_tipo_item
                    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.delete(DBSession.query(Fase).get(id_fase))

            DBSession.delete(DBSession.query(Proyecto).get(id_proyecto))
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se pudo eliminar! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/proyecto/listado")
        except SQLAlchemyError:
            flash(_("No se pudo eliminar! SQLAlchemyError..."), 'error')
            redirect("/admin/proyecto/listado")
        except (AttributeError, NameError):
            flash(_("No se pudo eliminar! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/proyecto/listado")
        else:
            flash(_("Proyecto eliminado!"), 'ok')

        redirect("/admin/proyecto/listado")
Esempio n. 8
0
 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'])
Esempio n. 9
0
    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")
Esempio n. 10
0
    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)
Esempio n. 11
0
    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")
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    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)
Esempio n. 15
0
    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")
Esempio n. 16
0
    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")
Esempio n. 17
0
    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)
Esempio n. 18
0
    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")
Esempio n. 19
0
    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")
Esempio n. 20
0
    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")
Esempio n. 21
0
 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")
Esempio n. 22
0
    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)
Esempio n. 23
0
 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")
Esempio n. 24
0
    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)
Esempio n. 25
0
 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'])
Esempio n. 26
0
 def addAncestro(self, **kw):
     """Metodo para agregar un registro a la base de datos """
     self.insertarAncestro(kw)
     DBSession.flush()
     redirect('listado',
              id_item=kw['id_item2'],
              id_proyecto=kw['id_proyecto'],
              id_fase=kw['id_fase'],
              id_tipo_item=kw['id_tipo_item'])
Esempio n. 27
0
    def importar(self, **kw):
        #id_proyecto, id_fase, id_tipo_item, nombre, descripcion, codigo):
        """Metodo que realiza la importacion del Tipo de Item con todos sus Atributos"""
        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()

            listaAtributos = DBSession.query(Atributo).filter_by(
                id_tipo_item=kw['id_tipo_item']).all()

            for unAtributo in listaAtributos:
                print unAtributo.nombre
                atributo = Atributo()
                atributo.id_tipo_item = tipo_item.id_tipo_item
                atributo.nombre = unAtributo.nombre
                atributo.descripcion = unAtributo.descripcion
                atributo.tipo = unAtributo.tipo
                DBSession.add(atributo)
                DBSession.flush()

            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(
                _("No se ha realizado la importacion! Hay Problemas con el servidor..."
                  ), 'error')
            redirect("/admin/tipo_item/listadoTipoItemPorFase",
                     id_proyecto=kw['id_proyecto'],
                     id_fase=kw['id_fase'])
        except SQLAlchemyError:
            flash(_("No se ha realizado la importacion! SQLAlchemyError..."),
                  'error')
            redirect("/admin/tipo_item/listadoTipoItemPorFase",
                     id_proyecto=kw['id_proyecto'],
                     id_fase=kw['id_fase'])
        except (AttributeError, NameError):
            flash(
                _("No se ha realizado la importacion! Hay Problemas con el servidor..."
                  ), 'error')
            redirect("/admin/tipo_item/listadoTipoItemPorFase",
                     id_proyecto=kw['id_proyecto'],
                     id_fase=kw['id_fase'])
        else:
            flash(_("Se ha importado correctamente!"), 'ok')

        redirect("/admin/tipo_item/listadoTipoItemPorFase",
                 id_proyecto=kw['id_proyecto'],
                 id_fase=kw['id_fase'])
Esempio n. 28
0
 def setUp(self):
     """Prepare model test fixture."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
Esempio n. 29
0
 def setUp(self):
     """Prepare model test fixture."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
    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 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)
Esempio n. 32
0
 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)
Esempio n. 33
0
    def update(self, **kw):
        """Metodo que actualiza la base de datos"""
        try:
            atributo = DBSession.query(Atributo).get(kw['id_atributo'])
            atributo.id_tipo_item = kw['id_tipo_item']
            atributo.nombre = kw['nombre']
            atributo.descripcion = kw['descripcion']
            atributo.tipo = kw['tipo']
            DBSession.flush()
            transaction.commit()
            tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item'])
            id_tipo_item = tipo_item.id_tipo_item
            fase = tipo_item.relacion_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/atributo/listadoAtributosPorTipoItem",
                     id_proyecto=id_proyecto,
                     id_fase=id_fase,
                     id_tipo_item=id_tipo_item)
        except SQLAlchemyError:
            flash(_("No se han guardado los cambios! 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 han guardado los cambios! Hay Problemas con el servidor..."
                  ), 'error')
            redirect("/admin/atributo/listadoAtributosPorTipoItem",
                     id_proyecto=id_proyecto,
                     id_fase=id_fase,
                     id_tipo_item=id_tipo_item)
        else:
            flash(_("Se han guardado los cambios!"), 'ok')

        redirect("/admin/atributo/listadoAtributosPorTipoItem",
                 id_proyecto=id_proyecto,
                 id_fase=fase.id_fase,
                 id_tipo_item=id_tipo_item)
Esempio n. 34
0
    def add(self, **kw):
        """Metodo para agregar un registro a la base de datos """
        try:
            atributo = Atributo()
            atributo.id_tipo_item = kw['id_tipo_item']
            atributo.nombre = kw['nombre']
            atributo.descripcion = kw['descripcion']
            atributo.tipo = kw['tipo']
            DBSession.add(atributo)
            DBSession.flush()
            transaction.commit()
            tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item'])
            id_tipo_item = tipo_item.id_tipo_item
            fase = tipo_item.relacion_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/atributo/listadoAtributosPorTipoItem",
                     id_proyecto=id_proyecto,
                     id_fase=id_fase,
                     id_tipo_item=id_tipo_item)
        except SQLAlchemyError:
            flash(_("No se ha guardado! 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 ha guardado! Hay Problemas con el servidor..."),
                  'error')
            redirect("/admin/atributo/listadoAtributosPorTipoItem",
                     id_proyecto=id_proyecto,
                     id_fase=id_fase,
                     id_tipo_item=id_tipo_item)
        else:
            flash(_("Atributo creado!"), 'ok')

        redirect("/admin/atributo/listadoAtributosPorTipoItem",
                 id_proyecto=id_proyecto,
                 id_fase=id_fase,
                 id_tipo_item=id_tipo_item)
Esempio n. 35
0
 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)
Esempio n. 36
0
    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")
Esempio n. 37
0
    def delete(self, id_rol, **kw):
        """Metodo que elimina un registro de la base de datos"""
        try:
            DBSession.delete(DBSession.query(Rol).get(id_rol))
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/rol/listado")
        except SQLAlchemyError:
            flash(_("No se ha eliminado! SQLAlchemyError..."), 'error')
            redirect("/admin/rol/listado")
        except (AttributeError, NameError):
            flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/rol/listado")
        else:
            flash(_("Rol eliminado!"), 'ok')

        redirect("/admin/rol/listado")
Esempio n. 38
0
    def delete(self, id_usuario, **kw):
        """Metodo que elimina un registro de la base de datos"""
        try:
            DBSession.delete(DBSession.query(Usuario).get(id_usuario))
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/usuario/listado")
        except SQLAlchemyError:
            flash(_("No se ha eliminado! SQLAlchemyError..."), 'error')
            redirect("/admin/usuario/listado")
        except (AttributeError, NameError):
            flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/usuario/listado")
        else:
            flash(_("Usuario eliminado!"), 'ok')

        redirect("/admin/usuario/listado")
Esempio n. 39
0
    def agregarPermiso(self, id_rol, id_permiso):
        """Metodo que realiza la agregacion de un permiso al rol selecccionado"""
        try:
            permiso = DBSession.query(Permiso).get(id_permiso)
            rol = DBSession.query(Rol).get(id_rol)
            permiso.roles.append(rol)
            DBSession.flush()
            transaction.commit()
        except IntegrityError:            
            redirect("/admin/rol/rolPermiso",id_rol=id_rol)
        except SQLAlchemyError:
            flash(_("No se pudo asignar el Permiso! SQLAlchemyError..."), 'error')
            redirect("/admin/rol/rolPermiso",id_rol=id_rol)
        except (AttributeError, NameError):
            flash(_("No se pudo asignar el Permiso! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/rol/rolPermiso",id_rol=id_rol)
        else:
            flash(_("Permiso asignado!"), 'ok')

        redirect("/admin/rol/rolPermiso",id_rol=id_rol)
Esempio n. 40
0
    def delete(self, id_proyecto, **kw):
        """Metodo que elimina un registro de la base de datos"""
        try:
            proyecto = DBSession.query(Proyecto).get(id_proyecto)
            fases = proyecto.fases

            for fase in fases:
                id_fase = fase.id_fase
                tipo_items = DBSession.query(TipoItem).filter_by(
                    id_fase=id_fase).all()
                for tipo_item in tipo_items:
                    id_tipo_item = tipo_item.id_tipo_item
                    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.delete(DBSession.query(Fase).get(id_fase))

            DBSession.delete(DBSession.query(Proyecto).get(id_proyecto))
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se pudo eliminar! Hay Problemas con el servidor..."),
                  'error')
            redirect("/admin/proyecto/listado")
        except SQLAlchemyError:
            flash(_("No se pudo eliminar! SQLAlchemyError..."), 'error')
            redirect("/admin/proyecto/listado")
        except (AttributeError, NameError):
            flash(_("No se pudo eliminar! Hay Problemas con el servidor..."),
                  'error')
            redirect("/admin/proyecto/listado")
        else:
            flash(_("Proyecto eliminado!"), 'ok')

        redirect("/admin/proyecto/listado")
Esempio n. 41
0
    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)
Esempio n. 42
0
    def agregarRol(self, id_proyecto, id_rol):
        """Metodo que realiza la agregacion de un rol al proyecto selecccionado"""
        try:
            rol = DBSession.query(Rol).get(id_rol)
            proyecto = DBSession.query(Proyecto).get(id_proyecto)
            rol.proyectos.append(proyecto)
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se ha asignado dicho Rol! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto)
        except SQLAlchemyError:
            flash(_("No se ha asignado dicho Rol! SQLAlchemyError..."), 'error')
            redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto)
        except (AttributeError, NameError):
            flash(_("No se ha asignado decho Rol! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto)
        else:
            flash(_("Rol asignado!"), 'ok')

        redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto)
Esempio n. 43
0
    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)
Esempio n. 44
0
    def importar(self, **kw):
		#id_proyecto, id_fase, id_tipo_item, nombre, descripcion, codigo):
        """Metodo que realiza la importacion del Tipo de Item con todos sus Atributos"""
        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()

            listaAtributos = DBSession.query(Atributo).filter_by(id_tipo_item=kw['id_tipo_item']).all()

            for unAtributo in listaAtributos:
                print unAtributo.nombre
                atributo = Atributo()
                atributo.id_tipo_item = tipo_item.id_tipo_item
                atributo.nombre = unAtributo.nombre
                atributo.descripcion = unAtributo.descripcion   
                atributo.tipo = unAtributo.tipo 
                DBSession.add(atributo)
                DBSession.flush()

            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se ha realizado la importacion! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'])
        except SQLAlchemyError:
            flash(_("No se ha realizado la importacion! SQLAlchemyError..."), 'error')
            redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'])
        except (AttributeError, NameError):
            flash(_("No se ha realizado la importacion! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'])
        else:
            flash(_("Se ha importado correctamente!"), 'ok')

        redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'])
Esempio n. 45
0
    def agregarRol(self, id_usuario, id_rol):
        """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/usuario/rolUsuario", id_usuario=id_usuario)
        except SQLAlchemyError:
            flash(_("No se pudo Asignar Rol! SQLAlchemyError..."), 'error')
            redirect("/admin/usuario/rolUsuario", id_usuario=id_usuario)
        except (AttributeError, NameError):
            flash(_("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/usuario/rolUsuario", id_usuario=id_usuario)
        else:
            flash(_("Rol asignado!"), 'ok')

        redirect("/admin/usuario/rolUsuario",id_usuario=id_usuario)
Esempio n. 46
0
    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)
Esempio n. 47
0
    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'])
Esempio n. 48
0
 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")
Esempio n. 49
0
    def update(self, **kw):        
        """Metodo que actualizar la base de datos"""
        try:
            rol = DBSession.query(Rol).get(kw['id_rol'])   
            rol.tipo=kw['tipo']
            rol.nombre_rol=kw['nombre_rol']
            rol.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/rol/listado")
        except SQLAlchemyError:
            flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error')
            redirect("/admin/rol/listado")
        except (AttributeError, NameError):
            flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/rol/listado")
        else:
            flash(_("Se han guardado los cambios!"), 'ok')

        redirect("/admin/rol/listado")
Esempio n. 50
0
    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)
Esempio n. 51
0
    def delete(self, id_proyecto, id_fase, id_tipo_item, id_atributo, **kw):
        """ Metodo que elimina el registro de un atributo
            Parametros: - id_atributo: Para identificar el atributo a eliminar
                        - id_tipo_item: Para redireccionar al listado de atributos correspondientes al tipo de item 
        """
        try:
            DBSession.delete(DBSession.query(Atributo).get(id_atributo))
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se ha eliminado! Hay Problemas con el servidor..."),
                  'error')
            redirect("/admin/atributo/listadoAtributosPorTipoItem",
                     id_proyecto=id_proyecto,
                     id_fase=id_fase,
                     id_tipo_item=id_tipo_item)
        except SQLAlchemyError:
            flash(_("No se ha eliminado! 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 ha eliminado! Hay Problemas con el servidor..."),
                  'error')
            redirect("/admin/atributo/listadoAtributosPorTipoItem",
                     id_proyecto=id_proyecto,
                     id_fase=id_fase,
                     id_tipo_item=id_tipo_item)
        else:
            flash(_("Atributo eliminado!"), 'ok')

        redirect("/admin/atributo/listadoAtributosPorTipoItem",
                 id_proyecto=id_proyecto,
                 id_fase=id_fase,
                 id_tipo_item=id_tipo_item)
Esempio n. 52
0
    def add(self, **kw):
        """Metodo para agregar un registro a la base de datos """
        try:
            rol = Rol()
            rol.tipo = kw['tipo']
            rol.nombre_rol = kw['nombre_rol']
            rol.descripcion = kw['descripcion']
            DBSession.add(rol)
            DBSession.flush()
            transaction.commit()
        except IntegrityError:
            transaction.abort()
            flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/rol/listado")
        except SQLAlchemyError:
            flash(_("No se ha guardado! SQLAlchemyError..."), 'error')
            redirect("/admin/rol/listado")
        except (AttributeError, NameError):
            flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error')
            redirect("/admin/rol/listado")
        else:
            flash(_("Rol creado!"), 'ok')

        redirect("/admin/rol/listado")
    def aprobar(self, id_proyecto, id_fase, id_linea_base, **kw):     
        """Metodo que aprueba la linea base"""
	linea_base = DBSession.query(LineaBase).get(id_linea_base)
	#Se realiza comprobaciones si la linea base se encuentra en estado de Revision
	if linea_base.estado=='Revision':
		sw=0
                items=linea_base.items
		for item in items:
			if item.estado=='Revision':
				sw=1
		if sw==1:
			flash(_("No puede aprobar la Linea Base, contiene items en revision"), 'error')
                	redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase)

	if linea_base.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)
	items = linea_base.items
	#Se verifica antes de aprobar que la linea base tenga por lo menos un item
	if items == []:
		flash(_("No puede aprobar una Linea Base sin items"), 'error')
                redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase)
	#Aqui se aprueba la linea base
	linea_base.estado = 'Aprobado'
	DBSession.flush()
	################################### Modificacion de Estado de Fases ###############################
	linea_bases=DBSession.query(LineaBase).filter_by(id_fase=id_fase).filter_by(estado='Aprobado')
	itemsenLineaBase = []
	for linea_base in linea_bases:
		itemsLineaBase = linea_base.items
		for itemLineaBase in itemsLineaBase:
			itemsenLineaBase.append(itemLineaBase)
	contador_items_en_linea_base = 0
	for item in itemsenLineaBase:
		contador_items_en_linea_base = contador_items_en_linea_base + 1
	#Se almacena la cantidad de items que se encuentran en una linea base aprobada dentro de la fase actual en: contador_items_en_linea_base
	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')
		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
	#Se almacena la cantidad de items que se encuentran en la fase actual en: contador_items_en_fase_actual
	fase=DBSession.query(Fase).get(id_fase)
	#Aqui se verifica si todos los items de la fase actual se encuentran en una linea base
	if contador_items_en_linea_base == contador_items_en_fase_actual:
		#En caso positivo el estado de la fase actual pasa al estado Con Lineas Bases(Id=4)
		fase.id_estado_fase = '4'
	if contador_items_en_linea_base < contador_items_en_fase_actual:	
		#En este caso, el estado de la fase actual pasa al estado Con Lineas Bases Parciales(Id=3)
		fase.id_estado_fase = '3'
	DBSession.flush()
	maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first()
	#A continuación se verifica que: si existe una fase posterior, dicha fase cambia a estado de Desarrollo(Id=2)
	if fase.numero_fase < maxnumerofase:
		numero_fase_siguiente = fase.numero_fase+1 
		fase_siguiente=DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).filter_by(numero_fase=numero_fase_siguiente).first()
		if fase_siguiente != None:		
			fase_siguiente.id_estado_fase = '2'	        
        DBSession.flush()
	#Aqui comprobamos si todos los items de la fase actual  tienen sucesores, en ese caso
	#el estado de la fase cambiamos a Finalizado
	fase=DBSession.query(Fase).get(id_fase)
	items_sin_sucesores = 0
	if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases':
		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')
			for itemTipoItem in itemsTipoItem:
				succs = DBSession.query(RelacionItem).filter_by(id_item1=itemTipoItem.id_item)
				sw=0
				for suc in succs:
					sw=1
				if sw==0:
					items_sin_sucesores = items_sin_sucesores + 1
		
		if contador_items_en_fase_actual == contador_items_en_fase_actual - items_sin_sucesores:
			fase.id_estado_fase = '5'
		
		DBSession.flush()
	#La condicion para que la ultima fase ya pase a Finalizado una vez que está Con Lineas Bases, debido
	#a que no tendrá sucesores
	if fase.numero_fase == maxnumerofase and fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases':
		fase.id_estado_fase = '5'	
		
	DBSession.flush()
	flash("Linea Base Aprobada")
        redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase)
Esempio n. 54
0
    def addAncestro(self, **kw):
        """Metodo para agregar un registro a la base de datos """       
        self.insertarAncestro(kw)
	DBSession.flush() 
        redirect('listado', id_item=kw['id_item2'], id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'], id_tipo_item=kw['id_tipo_item'])
Esempio n. 55
0
    def delete(self, id_relacion, idItemActual, id_proyecto, id_fase, id_tipo_item):
        """Metodo que elimina un registro de la base de datos"""
        item = DBSession.query(Item).get(idItemActual)
        id_item = item.id_item
        version_anterior = item.version
        version_nueva = int(item.version) + 1
        linea_bases_item = item.linea_bases

        #Comprobamos que no se encuentre en una Linea Base
        if linea_bases_item != []:
           for linea_base_item in linea_bases_item:
               flash(_("No puede Eliminar la relacion del Item! Se encuentra en una Linea Base..."), 'error')
               redirect('/relacion/listado', id_item=idItemActual, id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item)

        #El Item cambia de version al eliminar la relacion
        itemHistorial = ItemHistorial()
        itemHistorial.id_item = item.id_item
        itemHistorial.id_tipo_item = item.id_tipo_item
        itemHistorial.codigo = item.codigo
        itemHistorial.descripcion = item.descripcion
        itemHistorial.complejidad = item.complejidad
        itemHistorial.prioridad = item.prioridad
        itemHistorial.estado = "Desarrollo"
        itemHistorial.version = version_anterior
        itemHistorial.observacion = item.observacion
        itemHistorial.fecha_modificacion = item.fecha_modificacion
        item.version = version_nueva
        item.estado = "Desarrollo"
        DBSession.add(itemHistorial)
        DBSession.flush()

        #Consultamos los detalles que tiene el Item a ser editado y tambien
        #los atributos actuales de su Tipo de Item correspondiente
        detalles = DBSession.query(ItemDetalle).filter_by(id_item=id_item)
        atributos = DBSession.query(Atributo).filter_by(id_tipo_item=id_tipo_item)
        lista_id_atributo = []

        if atributos != None:
           for atributo in atributos:
               lista_id_atributo.append(atributo.id_atributo)

        #Enviamos al historial los detalles del Item a ser editado
        if detalles != None:
           for detalle in detalles:
               if lista_id_atributo.count(detalle.id_atributo) >= 1: 
                  lista_id_atributo.remove(detalle.id_atributo)
               itemDetalleHistorial = ItemDetalleHistorial()
               itemDetalleHistorial.id_item = id_item
               itemDetalleHistorial.id_item_detalle = detalle.id_item_detalle
               itemDetalleHistorial.id_atributo = detalle.id_atributo
               itemDetalleHistorial.nombre_atributo = detalle.nombre_atributo
               itemDetalleHistorial.valor = detalle.valor
               itemDetalleHistorial.version = version_anterior
               DBSession.add(itemDetalleHistorial)
               DBSession.flush()

        #Cargamos a vacio los atributos que no contemplaban los detalles actuales
        if lista_id_atributo != None:
           for id_atributo in lista_id_atributo:
               atributo = DBSession.query(Atributo).get(id_atributo)
               itemDetalle = ItemDetalle()
               itemDetalle.id_item = id_item
               itemDetalle.id_atributo = atributo.id_atributo
               itemDetalle.nombre_atributo = atributo.nombre
               itemDetalle.valor = ""
               DBSession.add(itemDetalle)
               DBSession.flush()

        #Enviamos sus relaciones actuales al historial de relaciones
        hijos = DBSession.query(RelacionItem).filter_by(id_item1=id_item)
        antecesores = DBSession.query(RelacionItem).filter_by(id_item2=id_item)
        if hijos != None:
           for hijo in hijos:
               relacion_historial = RelacionHistorial()
               relacion_historial.tipo = hijo.tipo
               relacion_historial.id_item1 = hijo.id_item1
               relacion_historial.id_item2 = hijo.id_item2
               relacion_historial.version_modif = version_anterior
               DBSession.add(relacion_historial)
               DBSession.flush()
        if antecesores != None:
           for antecesor in antecesores:
               relacion_historial = RelacionHistorial()
               relacion_historial.tipo = antecesor.tipo
               relacion_historial.id_item1 = antecesor.id_item1
               relacion_historial.id_item2 = antecesor.id_item2
               relacion_historial.version_modif = version_anterior
               DBSession.add(relacion_historial)
               DBSession.flush()

        #Ponemos a revision todos los items afectados por el item editado
        #Tambien colocamos a "Revision" las Lineas Bases correspondientes
        global itemsAfectados
        global listaRelaciones
        itemsAfectados = []
        listaRelaciones = []
            
        itemsAfectados.append(id_item)

        for item_afectado in itemsAfectados:
            self.buscarRelaciones(item_afectado)

        for item_afectado in itemsAfectados:
            item_cambio = DBSession.query(Item).get(item_afectado)
            item_cambio.estado = "Revision"
            linea_bases_item = item_cambio.linea_bases
            if linea_bases_item != None:
               for linea_base_item in linea_bases_item:
                   if linea_base_item.estado == "Aprobado":
                      id_linea_base = linea_base_item.id_linea_base 
                      linea_base = DBSession.query(LineaBase).get(id_linea_base)
                      linea_base.estado = "Revision"
                      fase = DBSession.query(Fase).get(linea_base.id_fase)
                      if fase.relacion_estado_fase.nombre == "Finalizado":
                         fase.id_estado_fase = '4'
                      DBSession.flush()
            DBSession.flush() 

        #Los archivos adjuntos del Item a ser editado se copian
        #para tener el registro de estos archivos con esa version de item
        archivos_item_editado = DBSession.query(ItemArchivo).filter_by(id_item=id_item).filter_by(version_item=version_anterior)
        if archivos_item_editado != None:
           for archivo in archivos_item_editado:
               nuevo_archivo = ItemArchivo()
               nuevo_archivo.id_item = archivo.id_item
               nuevo_archivo.version_item = version_anterior
               nuevo_archivo.nombre_archivo = archivo.nombre_archivo
               nuevo_archivo.contenido_archivo = archivo.contenido_archivo
               archivo.version_item = version_nueva
               DBSession.add(nuevo_archivo)
               DBSession.flush()     

        DBSession.delete(DBSession.query(RelacionItem).get(id_relacion))
        DBSession.flush()
        transaction.commit()   
        flash(_("Relacion eliminada!"), 'ok')
        redirect('/relacion/listado', id_item=idItemActual, id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item)
    def romper(self,  id_proyecto, id_fase, id_linea_base, **kw):     
        """Metodo que rompe la linea base"""
	fase=DBSession.query(Fase).get(id_fase)
	linea_bases=DBSession.query(LineaBase).filter_by(id_fase=id_fase).filter_by(estado='Aprobado')
	itemsenLineaBase = []
	for linea_base in linea_bases:
		itemsLineaBase = linea_base.items
		for itemLineaBase in itemsLineaBase:
			itemsenLineaBase.append(itemLineaBase)
	contador_items_en_linea_base = 0
	for item in itemsenLineaBase:
		contador_items_en_linea_base = contador_items_en_linea_base + 1
	#Se almacena la cantidad de items que se encuentran en una linea base aprobada dentro de la fase actual en: contador_items_en_linea_base
	if contador_items_en_linea_base==1:
		if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases' or fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases Parciales':
			fase.id_estado_fase='2'
			maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first()
			#A continuación se verifica que: si existe una fase posterior, y si no tiene items, tendrá que tener el estado de su fase inicial
			if fase.numero_fase < maxnumerofase:
				numero_fase_siguiente = fase.numero_fase+1 
				fase_siguiente=DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).filter_by(numero_fase=numero_fase_siguiente).first()
				tipo_items=DBSession.query(TipoItem).filter_by(id_fase=fase_siguiente.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_siguiente = 0
				for item in itemsDeFaseActual:
					contador_items_en_fase_siguiente = contador_items_en_fase_siguiente + 1
				if contador_items_en_fase_siguiente == 0:
					fase_siguiente.id_estado_fase='1'	
	
	#Comprueba si la fase se encuentra en el estado Con Linas Bases, cambia al estado Con Lineas Bases Parciales,
	# si es que existe más de un item en una linea base
	if contador_items_en_linea_base>1:
		if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases':
		      fase.id_estado_fase='3'

	DBSession.flush()
        linea_base = DBSession.query(LineaBase).get(id_linea_base)
	#Cambia el estado de la linea base de Aprobado a Desarrollo
	linea_base.estado = 'Desarrollo' 
	
	
	DBSession.flush()
	#Guarda en el historial la última linea base aprobada
	linea_baseHistorial = LineaBaseHistorial()
        linea_baseHistorial.id_linea_base = linea_base.id_linea_base
        linea_baseHistorial.nombre = linea_base.nombre
        linea_baseHistorial.descripcion = linea_base.descripcion
        linea_baseHistorial.estado = linea_base.estado
        linea_baseHistorial.id_fase = linea_base.id_fase
	linea_baseHistorial.version = linea_base.version
	DBSession.add(linea_baseHistorial)
	DBSession.flush() 
	linea_baseHistorial=DBSession.query(LineaBaseHistorial).filter_by(id_linea_base=linea_base.id_linea_base).filter_by(version=linea_base.version).first()
	items = linea_base.items
        #Aqui se van agregando registros a la tabla Linea_Base_Item_Historial para que el 
	#sistema guarde automáticamente el historial de los items que contiene la linea base
	for item in items:
        	#item.linea_bases_historial.append(linea_baseHistorial)
		linea_base_item_historial=LineaBaseItemHistorial()
		linea_base_item_historial.relacion=linea_baseHistorial
		linea_base_item_historial.id_item=item.id_item
		linea_base_item_historial.id_historial_linea_base=linea_baseHistorial.id_historial_linea_base
		linea_base_item_historial.version=item.version
		item.linea_bases_historial.append(linea_base_item_historial)
		DBSession.add(linea_base_item_historial)
		DBSession.flush()
		 
	
        version_aux = int(linea_base.version)+1
  	linea_base.version = str(version_aux)
	DBSession.flush()
	flash("Linea Base Rota")
        redirect("/admin/linea_base/listado_linea_bases", id_proyecto=id_proyecto, id_fase=id_fase)