예제 #1
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)
예제 #2
0
    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)
예제 #3
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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
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)
예제 #9
0
    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)
예제 #10
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)
예제 #11
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")
예제 #12
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")
예제 #13
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")
예제 #14
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")
예제 #15
0
    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)
예제 #16
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'])
예제 #17
0
    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)
예제 #18
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)
예제 #19
0
    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)
예제 #20
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)
예제 #21
0
    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)
예제 #22
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")
예제 #23
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'])
예제 #24
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)
예제 #25
0
    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)
예제 #26
0
 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)
예제 #27
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'])
예제 #28
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")
예제 #29
0
    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)
예제 #30
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")
예제 #31
0
    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)
예제 #32
0
    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)
예제 #33
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")
예제 #34
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)
예제 #35
0
    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)
예제 #36
0
 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)
예제 #37
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")
예제 #38
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)
예제 #39
0
    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)
예제 #40
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")
예제 #41
0
    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)
예제 #42
0
    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)
예제 #43
0
    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)
예제 #44
0
    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)
예제 #45
0
    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)
예제 #46
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'])
예제 #47
0
    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)
예제 #48
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)
예제 #49
0
    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)
예제 #50
0
    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)
예제 #51
0
    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)
예제 #52
0
    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)
예제 #53
0
    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)
예제 #54
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)
예제 #55
0
 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)
예제 #56
0
    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)
예제 #57
0
    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")
예제 #58
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)
예제 #59
0
    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)