Example #1
0
def add():
    """ Funcion para agregar registros a la tabla Rol"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        form = RolFormulario(request.form)
        if request.method == 'POST' and form.validate():
            # init_db(db_session)
            try:
                rol = Rol(form.codigo.data, form.descripcion.data)
                db_session.add(rol)
                db_session.commit()
                flash('El rol ha sido registrado con exito', 'info')
                return redirect('/administrarrol')  # /listarol
            except DatabaseError, e:
                if e.args[0].find('duplicate key value violates unique') != -1:
                    flash('Clave unica violada por favor ingrese otro CODIGO de Rol' , 'error')
                else:
                    flash('Error en la Base de Datos' + e.args[0], 'error')
                return render_template('rol/nuevorol.html', form=form)
        else:
            flash_errors(form) 
        return render_template('rol/nuevorol.html', form=form)
Example #2
0
def desasignarpermiso():
    """ Funcion para desasignar los permisos de un rol """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        idrol = request.args.get('idrol')
        permisos = getPermisosByRol(idrol)
        if request.method == 'POST':
            rol = request.form.get('idrol')
            permisosMarcados = request.form.getlist('permisos')
            permisosAsignados = getPermisosByRol(rol)
            #=======================================================================
            # Inserta los permisos seleccionados
            #=======================================================================
            for pa in permisosAsignados :
                bandera = False
                for pm in permisosMarcados :
                    if int(pm) == pa.id : 
                        bandera = True
                if not bandera : 
                    rolper = db_session.query(RolPermiso).filter_by(id_rol=rol, id_permiso=pa.id).first()
                    db_session.delete(rolper)
                    db_session.commit()
                    flash('Permiso desasignado correctamente', 'info')
            return redirect('/administrarrol')
        return render_template('rol/desasignarpermisos.html', permisos = permisos, idrol = idrol)
    else: 
        flash('Sin permisos para la operacion', 'info')
        return redirect('/administrarrol')
Example #3
0
def buscarpermiso():
    """ Funcion para buscar registros en la tabla Permiso"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        valor = request.args['patron']
        parametro = request.args['parametro']
        idrol =request.form.get('rol')
        #init_db(db_session)
        if valor=='' or valor == None:
            return administrarpermiso()
        else:
            if parametro == 'id_recurso':
                p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where to_char("+parametro+", '99999') ilike '%"+valor+"%'").all()
                #p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" = CAST("+valor+" AS Int)").all()
            else:
                p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" ilike '%"+valor+"%'").all()
                #p = db_session.query(Permiso).filter(Permiso.codigo.like('%'+valor+'%'))
        if idrol != '' and idrol != None:
            yourPermiso=getPermisosByRol(idrol)
            lista = []
            for per in yourPermiso:
                lista.append(per)
            return render_template('permiso/administrarpermiso.html', permisos = p, isAdministrar = False, idrol = idrol, asignados = lista)
        return render_template('permiso/administrarpermiso.html', permisos = p, isAdministrar = True)
    else:
        flash('Sin permisos para buscar permisos', 'permiso')
        return render_template('index.html')
Example #4
0
def editarpermiso():
    """ Funcion para editar registros a la tabla Permiso"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')

    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        p = db_session.query(Permiso).filter_by(codigo=request.args.get('codigo')).first()
        form = PermisoFormulario(request.form,p)
        permiso = db_session.query(Permiso).filter_by(codigo=form.codigo.data).first()
        if request.method == 'POST':
            if form.validate():
                form.populate_obj(permiso)
                db_session.merge(permiso)
                db_session.commit()
                flash('El permiso ha sido modificado con exito','info')
                return redirect('/permiso/administrarpermiso')
            else:
                flash_errors(form)
        else:
            flash_errors(form)
        return render_template('permiso/editarpermiso.html', form=form)
    else:
        flash('Sin permisos para modificar permisos', 'permiso')
        return render_template('index.html')
Example #5
0
def nuevorecurso():
    """ Funcion para agregar registros a la tabla recursos"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        form = RecursoFormulario(request.form)
        if  request.args.get('id_recurso') == None:
            id_recurso= request.form.get('id')
        else:
            id_recurso= request.args.get('id_recurso')
            
        if  request.args.get('recursoTipo') == None:
            parametro= request.form.get('param')
        else:
            parametro= request.args.get('recursoTipo')
             
        if  request.method != 'POST' :
            id_recurso= request.args.get('id_recurso')
            parametro= request.args.get('recursoTipo')
            lista=None
            if parametro == 'fase' :
                lista = db_session.query(Fase).filter_by(id= id_recurso).first()
                form.id_fase.data= lista.id
                form.recurso.data = lista.nombre
            elif parametro == 'proyecto' :
                lista = db_session.query(Proyecto).filter_by(id= id_recurso).first()
                form.id_proyecto.data= lista.id
                form.recurso.data= lista.nombre   
           
        if request.method == 'POST' and form.validate():
            try: 
                if form.id_proyecto.data == 'None':
                    form.id_proyecto.data = None
                else :
                    form.id_proyecto.data = int(form.id_proyecto.data)
                
                if form.id_fase.data == 'None':
                    form.id_fase.data = None
                else :
                    form.id_fase.data = int(form.id_fase.data)
                
                rec = Recurso(form.nombre.data, form.id_proyecto.data, form.id_fase.data )
                db_session.add(rec)
                db_session.commit()
                flash('El Recurso ha sido registrado con exito','info')
                return redirect('/recurso/administrarrecurso') 
            except DatabaseError, e:
                flash('Error en la Base de Datos' + e.args[0],'error')
                return render_template('recurso/nuevorecurso.html', form=form)
        else:
            flash_errors(form) 
            return render_template('recurso/nuevorecurso.html', form=form)
Example #6
0
def asignarpermiso():
    """ Funcion para asignar Permisos a cada Rol"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can(): 
        #=======================================================================
        # desde aqui : Ejecuta esta seccion la primera vez que entra, cuando selecciona solo el usuario
        #=======================================================================
        idproyecto = request.args.get('idproyecto')
        idrol = request.args.get('idrol')
        rolobtenido = db_session.query(Rol).filter_by(id=idrol).first()
        if not rolobtenido == None:
            if str(rolobtenido.codigo) == 'ADMINISTRADOR':
                flash('El rol no tiene permisos', 'info')
                return redirect('/administrarrol')
        if request.method == 'POST':
            rol = request.form.get('idrol')
            permisos = request.form.getlist('permisos')
            #=======================================================================
            # Inserta los permisos seleccionados
            #=======================================================================
            for p in permisos :
                rolper = RolPermiso(rol, p)
                exits = db_session.query(RolPermiso).filter_by(id_rol=rol, id_permiso=p).first()
                if not exits:
                    db_session.merge(rolper)
                    db_session.commit()
                flash('Permisos asignados correctamente', 'info')
            return redirect('/administrarrol')
        if idproyecto == None:
            #significa que no se selecciono proyecto
            #obtiene permisos de un rol
            permisos = getPermisosByRol(idrol)
            if len(permisos) > 0:
                #si tiene permisos muestra directamente permisos del proyecto
                #obtiene idproyecto del permiso que tenga especificado una fase
                idproyecto = getProyectoByPermiso(permisos)
                #obtiene permisos no asignados al rol
                permisos = listadoPermisosNoAsignados(idproyecto, idrol)
                return render_template('rol/asignarpermisos.html', permisos = permisos, idrol = idrol, idproyecto = idproyecto)
            else :  
                #si no tiene permisos asignados 
                proyectos = db_session.query(Proyecto).order_by(Proyecto.nombre);
                return render_template('proyecto/seleccionproyecto.html', proyectos=proyectos, idrol=idrol)
        else:
            permisos = getPermisosByProyecto(idproyecto)
            return render_template('rol/asignarpermisos.html', permisos = permisos, idrol = idrol, idproyecto = idproyecto)
    else:
        flash('Sin permisos para asignar permisos al rol', 'permiso')
        return render_template('index.html')
Example #7
0
def eliminarproyecto():
    """ Funcion para eliminar registros de la tabla Proyecto"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        try:
            r = db_session.query(Rol).filter_by(codigo='COMITE CAMBIOS').first()
            r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first()
            nom = request.args.get('nom')
            #init_db(db_session)
            proyecto = db_session.query(Proyecto).filter_by(nombre=nom).first()
            com = db_session.query(MiembrosComite).filter(MiembrosComite.id_usuario!=proyecto.id_usuario_lider).filter_by(id_proyecto=proyecto.id).first()  
            if proyecto.estado != 'N' :
                flash('No se puede eliminar un Proyecto que no se encuentre en estado Nuevo','info')
                return render_template('proyecto/administrarproyecto.html')
            if com != None :
                flash('Por favor desasigne los Miembros del Comite de Cambios del Proyecto para poder eliminar','info')
                return render_template('proyecto/administrarproyecto.html')
        
            mie = db_session.query(MiembrosComite).filter_by(id_usuario=proyecto.id_usuario_lider).filter_by(id_proyecto=proyecto.id).first()  
            #init_db(db_session)
            db_session.delete(mie)
            db_session.commit()
        
            li = db_session.query(UsuarioRol).filter_by(id_rol=r2.id).filter_by(id_usuario=proyecto.id_usuario_lider).filter_by(id_proyecto=proyecto.id).first()  
            #init_db(db_session)
            db_session.delete(li)
            db_session.commit()
        
            re = db_session.query(Recurso).filter_by(id_proyecto=proyecto.id).filter_by(nombre=proyecto.nombre).first()  
            per = db_session.query(Permiso).filter_by(id_recurso=re.id).filter_by(codigo='CONSULTAR PROYECTO').first()
            rp = db_session.query(RolPermiso).filter_by(id_rol=r.id).filter_by(id_permiso=per.id).first()

            db_session.delete(rp)
            db_session.commit()
        
            db_session.delete(per)
            db_session.commit()
        
            db_session.delete(re)
            db_session.commit()
        
            db_session.delete(proyecto)
            db_session.commit()
            flash('El proyecto ha sido eliminado con exito', 'info')
            return redirect('/proyecto/administrarproyecto')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'info')
            return render_template('proyecto/administrarproyecto.html')
Example #8
0
def administrarrol():
    """ Funcion para listar registros de la tabla Rol"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        roles = db_session.query(Rol).order_by(Rol.codigo)
        return render_template('rol/administrarrol.html', roles=roles)
    else:
        flash('Sin permisos para administrar roles', 'permiso')
        return render_template('index.html')
Example #9
0
def administrarrecurso():
    """funcion que lista todos los recursos"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        recursos = db_session.query(Recurso).order_by(Recurso.nombre)
        return render_template('recurso/administrarrecurso.html', recursos = recursos)
    else:
        flash('Sin permisos para administrar recursos', 'permiso')
        return render_template('index.html')
Example #10
0
def administrarusuario():
    """ Funcion para listar registros de la tabla Usuario """ 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        usuarios = db_session.query(Usuario).order_by(Usuario.nombre)
        return render_template('usuario/administrarusuario.html', usuarios = usuarios)
    else:
        flash('Sin permisos para administrar usuarios', 'permiso')
        return render_template('index.html')
Example #11
0
def quitarrolusu():
    """ Funcion para quitar Roles al Usuario""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
 
    permission =UserRol('ADMINISTRADOR')
    if permission.can()==False:
        flash('No posee los permisos suficientes para realizar la operacion', 'permiso')
        return render_template('index.html')
 
    if  request.args.get('usu') == None:
        id_usu= request.form.get('id')
    else:
        id_usu=request.args.get('usu')    
    usu = db_session.query(Usuario).filter_by(id=id_usu).first()  
    form = UsuarioFormulario(request.form,usu)    
    rolesv=  db_session.query(Rol).from_statement("select * from rol where id in (select id_rol from usuario_rol where id_usuario="+str(usu.id)+")").all()
    aux=[]
    for rl in rolesv :
        pro=  db_session.query(Proyecto).from_statement("select * from proyecto where id in (select id_proyecto from recurso where id in "+ 
       " ( select id_recurso from permiso where id in (select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1)))").first()
        aux.append(pro)
    if request.method == 'POST' : 
        roles=request.form.getlist('selectrol')
        try:
            list_aux=[]
            #===================================================================
            # if len(rolesv) == len(roles):
            #    flash('El Usuario no puede quedarse sin Roles','info')   
            #    return redirect('/usuario/administrarusuario')
            #===================================================================
            for rl in roles :
                r = db_session.query(Rol).filter_by(id=rl).first()
                list_aux.append(r)
                          
            for rl in list_aux:
                ur = db_session.query(UsuarioRol).filter_by(id_rol=rl.id,id_usuario=request.form.get('id')).first()  
                db_session.delete(ur)
                db_session.commit()
                flash('Se quito el Rol con Exito','info')   
            return redirect('/usuario/administrarusuario')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'error')
            return render_template('usuario/quitarrolusu.html', form=form, roles=rolesv, pro=aux)
Example #12
0
def buscarproyecto():
    """ Funcion para buscar registros en la tabla Proyecto"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        valor = request.args['patron']
        parametro = request.args['parametro']
        if valor == "" : 
            administrarproyecto()
        if parametro == 'cant_miembros' :
            p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", '99999') ilike '%"+valor+"%'").all()
        elif parametro == 'id_usuario_lider':
            p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" in (SELECT id FROM usuario where nombre ilike '%"+valor+"%' or apellido ilike '%"+valor+"%')").all()
        elif parametro == 'fecha_inicio' or parametro == 'fecha_fin':
            p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%'").all()
        else:
            p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" ilike '%"+valor+"%'").all()
        return render_template('proyecto/administrarproyecto.html', proyectos = p)   

    else:
        idproy = None
        if 'pry' in session:
            idproy = session['pry']
        permiss = UserPermission('LIDER PROYECTO', int(idproy))
        opcionPerm = UserPermission('COMITE CAMBIOS', int(session['pry']))
        if permiss.can() or opcionPerm.can():
            valor = request.args['patron']
            parametro = request.args['parametro']
            if valor == "" : 
                administrarproyecto()
            if parametro == 'cant_miembros' :
                p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", '99999') ilike '%"+valor+"%' and id = "+str(idproy)).all()
            elif parametro == 'id_usuario_lider':
                p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" in (SELECT id FROM usuario where nombre ilike '%"+valor+"%' or apellido ilike '%"+valor+"%') and id = "+str(idproy)).all()
            elif parametro == 'fecha_inicio' or parametro == 'fecha_fin':
                p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%' and id = "+str(idproy)).all()
            else:
                p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" ilike '%"+valor+"%' and id = "+str(idproy)).all()
            return render_template('proyecto/administrarproyecto.html', proyectos = p)
        else:
            flash('Sin permisos para buscar proyectos', 'permiso')
            return render_template('index.html')
Example #13
0
def eliminarpermiso():
    """ Funcion para eliminar registros a la tabla Permiso"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        try:
            cod = request.args.get('codigo')
            rol = db_session.query(Permiso).filter_by(codigo=cod).first()
            db_session.delete(rol)
            db_session.commit()
            flash('El permiso ha sido eliminado con exito','info')
            return redirect('/permiso/administrarpermiso')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0], 'info')
            return render_template('permiso/administrarpermiso.html')
Example #14
0
def buscarrecurso():
    """funcion que permite buscar un recurso"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        valor = request.args['patron']
        parametro = request.args['parametro']
        if valor == "" : 
            administrarrecurso()
            
        p = db_session.query(Recurso).from_statement("SELECT * FROM recurso where "+parametro+" ilike '%"+valor+"%'").all()
        return render_template('recurso/administrarrecurso.html', recursos = p)
    else:
        flash('Sin permisos para buscar recursos', 'permiso')
        return render_template('index.html')
Example #15
0
def eliminarusuario():
    """ Funcion para eliminar registros de la tabla Usuario""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        try:
            usu = request.args.get('usu')
            usuario = db_session.query(Usuario).filter_by(usuario=usu).first()  
            db_session.delete(usuario)
            db_session.commit()
            flash('El usuario ha sido eliminado con exito','info')
            return redirect('/usuario/administrarusuario')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'info')
            return render_template('usuario/administrarusuario.html')
Example #16
0
def editarusuario():
    """ Funcion para editar registros de la tabla Usuario""" 
    """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        today = datetime.date.today()
        """ Se un objeto md5 para encriptar la contrasenha del usuario """    
        con = md5.new()
        conf = md5.new()
        p = db_session.query(Usuario).filter_by(usuario=request.args.get('usu')).first()  
        form = UsuarioFormulario(request.form,p)
        usuario = db_session.query(Usuario).filter_by(usuario=form.usuario.data).first()  
        if request.method == 'POST' and form.validate():
            if form.fecha_nac.data > today :
                flash('Ingrese una fecha de nacimiento valida','error')
                return render_template('usuario/editarusuario.html', form=form)  
            if form.password.data != form.confirmar.data :
                conf.update(form.confirmar.data)
                confir = conf.hexdigest()
                if form.password.data != confir :
                    flash('Las contrasenhas deben coincidir','error')
                    return render_template('usuario/editarusuario.html', form=form)  
            try:
                con.update(form.password.data)
                aux = usuario.id
                form.populate_obj(usuario)
                usuario.password = con.hexdigest()
                usuario.id = aux
                db_session.merge(usuario)
                db_session.commit()
                flash('El usuario ha sido modificado con exito','info')
                return redirect('/usuario/administrarusuario')
            except DatabaseError, e:
                flash('Error en la Base de Datos' + e.args[0],'error')
                return render_template('usuario/editarusuario.html', form=form)
        else:
            flash_errors(form)
        return render_template('usuario/editarusuario.html', form=form)
Example #17
0
def eliminarrecurso():
    """funcion que elimina un recurso
    @param id_recurso: indica el id del recurso a eliminar.
    @return: retorna a la pagina de administrar recurso.
    @bug: Error de base de datos al tratar de eliminar el recurso.
    @precondition: No debe existir permisos con el recurso para que se elimine con exito.
    @attention: Requiere que se tenga el rol de administrador para realizar la opcion."""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        try:
            print request.args.get('id_recurso')
            if request.args.get('id_recurso') != None:
                r = db_session.query(Recurso).filter_by(id=request.args.get('id_recurso')).first()
                form = RecursoFormulario(request.form, r)
                if r.id_fase != None :
                    form.id_fase.data = r.recursofase.nombre
                    form.id_proyecto.data = None
                else:
                    form.id_fase.data = None
                    form.id_proyecto.data = r.recursoproyecto.nombre
            else :
                form = RecursoFormulario(request.form)
            if request.method == 'POST':
                permiso = db_session.query(Permiso).filter_by(id_recurso= form.id.data).first()
                if permiso != None :
                    flash('No se ha podido Eliminar, existe permisos que utiliza el recurso','info')
                    return redirect('/recurso/administrarrecurso')     
    
                recurso = db_session.query(Recurso).filter_by(id= form.id.data).first()
                db_session.delete(recurso)
                db_session.commit()
                flash('El recurso ha sido eliminado con exito','info')
                return redirect('/recurso/administrarrecurso')
            return render_template('recurso/eliminarrecurso.html', form=form)
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'error')
            return render_template('recurso/eliminarrecurso.html', form= form)
Example #18
0
def verrolusu():
    """ Funcion para listar Roles de un Usuario""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission =UserRol('ADMINISTRADOR')
    if permission.can()==False:
        flash('No posee los permisos suficientes para realizar la operacion', 'permiso')
        return render_template('index.html')
    
    id_usu = request.args.get('usu') 
    usu = db_session.query(Usuario).filter_by(id=id_usu).first()
    rolesv=  db_session.query(Rol).from_statement("select * from rol where id in (select id_rol from usuario_rol where id_usuario="+str(usu.id)+")").all()
    aux=[]
    for rl in rolesv :
        pro=  db_session.query(Proyecto).from_statement("select * from proyecto where id in (select id_proyecto from recurso where id in "+ 
       " ( select id_recurso from permiso where id in (select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1)))").first()
        aux.append(pro)
    form = UsuarioFormulario(request.form,usu)
    return render_template('usuario/verrolusu.html', form=form, roles= rolesv, pro=aux)  
Example #19
0
def buscar():
    """ Funcion para buscar registros de la tabla Rol""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        valor = request.args['patron']
        parametro = request.args['parametro']
        if valor == "" : 
            administrarrol()
        p = db_session.query(Rol).from_statement("SELECT * FROM rol where " + parametro + " ilike '%" + valor + "%'").all()
        return render_template('rol/administrarrol.html', roles=p)
        valor = request.args['patron']
        r = db_session.query(Rol).filter_by(codigo=valor)
        if r == None:
            return 'no existe concordancia'
        return render_template('rol/administrarrol.html', roles=r)
    else:
        flash('Sin permisos para buscar roles', 'permiso')
        return render_template('index.html')
Example #20
0
def nuevousuario():
    """ Funcion para agregar registros a la tabla Usuario""" 
    """ Se obtiene la fecha actual para verificar la fecha de nacimiento """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        today = datetime.date.today()
        form = UsuarioFormulario(request.form)
        """ Se un objeto md5 para encriptar la contrasenha del usuario """    
        con = md5.new()  
        if request.method == 'POST' and form.validate():
            if form.fecha_nac.data > today :
                flash('Ingrese una fecha de nacimiento valida','error')
                return render_template('usuario/nuevousuario.html', form=form)  
            if form.password.data != form.confirmar.data :
                flash('Las contrasenhas deben coincidir','error')
                return render_template('usuario/nuevousuario.html', form=form)  
            try:
                con.update(form.password.data)
                usu = Usuario(form.usuario.data,  
                    form.nombre.data, form.apellido.data, con.hexdigest(), 
                    form.correo.data, form.domicilio.data, 
                    form.telefono.data, form.fecha_nac.data)
                db_session.add(usu)
                db_session.commit()
                flash('El Usuario ha sido registrado con exito ','info')
                return redirect('/usuario/administrarusuario')
            except DatabaseError, e:
                if e.args[0].find('duplicate key value violates unique')!=-1:
                    flash('Clave unica violada por favor ingrese otro USUARIO para el registro' ,'error')
                else:
                    flash('Error en la Base de Datos' + e.args[0],'error')
                return render_template('usuario/nuevousuario.html', form=form)
        else:
            flash_errors(form) 
        return render_template('usuario/nuevousuario.html', form=form)
Example #21
0
def administrarpermiso():
    """ Funcion para ver registros a la tabla Permiso"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        isAdmin = request.args.get('value')
        rol = request.args.get('idrol')
        permisos = db_session.query(Permiso).order_by(Permiso.id)
        lista = []
        if not isAdmin :
            #=======================================================================
            # en esta lista se inserta los permisos que estan asignados a un rol
            #=======================================================================
            yourPermiso=getPermisosByRol(rol)
            for p in yourPermiso:
                lista.append(p)
        return render_template('permiso/administrarpermiso.html', permisos = permisos, isAdministrar = isAdmin, idrol = rol, asignados = lista)
    else:
        flash('Sin permisos para administrar proyectos', 'permiso')
        return render_template('index.html')
Example #22
0
def buscarusuario():
    """ Funcion para buscar registros de la tabla Usuario""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        valor = request.args['patron']
        parametro = request.args['parametro']
        if valor == "" : 
            administrarusuario()
        if parametro == 'fecha_nac':
            p = db_session.query(Usuario).from_statement("SELECT * FROM usuario where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%'").all()
        else:
            p = db_session.query(Usuario).from_statement("SELECT * FROM usuario where "+parametro+" ilike '%"+valor+"%'").all()
        return render_template('usuario/administrarusuario.html', usuarios = p)   
        valor = request.args['patron']
        r = db_session.query(Usuario).filter_by(usuario=valor)
        return render_template('usuario/administrarusuario.html', usuarios = r)
    else:
        flash('Sin permisos para buscar usuarios', 'permiso')
        return render_template('index.html')
Example #23
0
def buscarpermisoSinasignar():
    """ Funcion para buscar permisos que no pertenecen al rol """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        idrol = request.args.get('idrol')
        valor = request.args['patron']
        parametro = request.args['parametro']
        if valor == "" : 
            permisos = getPermisosByRol(idrol)
            if len(permisos) > 0:
                #si tiene permisos muestra directamente permisos del proyecto
                #obtiene idproyecto del permiso que tenga especificado una fase
                idproyecto = getProyectoByPermiso(permisos)
                #obtiene permisos no asignados al rol
                permisos = listadoPermisosNoAsignados(idproyecto, idrol)
                return render_template('rol/asignarpermisos.html', permisos = permisos, idrol = idrol)
        else:
            if parametro == 'id_recurso':
                p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where to_char("+parametro+", '99999') ilike '%"+valor+"%'").all()
                #p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" = CAST("+valor+" AS Int)").all()
            else:
                p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" ilike '%"+valor+"%'").all()
                
        return render_template('rol/asignarpermisos.html', permisos = p, idrol = idrol)
        valor = request.args['patron']
        # init_db(db_session)
        r = db_session.query(Rol).filter_by(codigo=valor)
        if r == None:
            return 'no existe concordancia'
        return render_template('rol/administrarrol.html', roles=r)
    else:
        flash('Sin permisos para buscar permisos no asignados', 'permiso')
        return render_template('index.html')
Example #24
0
def seleccionrecurso():
    """ Funcion para seleccionar tipo de recurso a crear"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        parametro = request.args['parametro']
        lista = []
        if parametro == 'fase' :
            lista = db_session.query(Fase).filter(~Fase.id.in_(db_session.query(Recurso.id_fase).from_statement('SELECT recurso.id_fase '+
                                                                                                                              'from recurso '+
                                                                                                                              'where recurso.id_fase is not null'))).all()
        elif parametro == 'proyecto' :
            lista = db_session.query(Proyecto).filter(~Proyecto.id.in_(db_session.query(Recurso.id_proyecto).from_statement('SELECT recurso.id_proyecto '+
                                                                                                                              'from recurso '+
                                                                                                                              'where recurso.id_proyecto is not null'))).all()
        else:
            parametro= None    
        return render_template('recurso/seleccionrecurso.html',lista = lista, param= parametro)
    else:
        flash('Sin permisos para seleccionar recursos', 'permiso')
        return render_template('index.html')
Example #25
0
def administrarproyecto():
    """ Funcion para listar registros de la tabla Proyecto""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    idproy = None
    if 'pry' in session:
        idproy = session['pry']
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        if idproy != None :  
            proyectos = db_session.query(Proyecto).filter(Proyecto.id == idproy).all()
        else :
            proyectos = db_session.query(Proyecto).order_by(Proyecto.nombre)
    else:
        permiss = UserPermission('LIDER PROYECTO', int(idproy))
        opcionPerm = UserPermission('COMITE CAMBIOS', int(session['pry']))
        if permiss.can() or opcionPerm.can():
            proyectos = db_session.query(Proyecto).filter(Proyecto.id == idproy).all()
        else:
            flash('Sin permisos para administrar proyectos', 'permiso')
            return render_template('index.html')
    return render_template('proyecto/administrarproyecto.html', proyectos = proyectos)
Example #26
0
def nuevopermiso():
    """ Funcion para agregar registros a la tabla Permiso""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        form = PermisoFormulario(request.form)
        form.id_recurso.choices= [(r.id, r.nombre) for r in db_session.query(Recurso).order_by(Recurso.nombre)]
        if request.method == 'POST' and form.validate():
            try:
                permiso = Permiso(form.codigo.data, form.descripcion.data, form.id_recurso.data)
                db_session.add(permiso)
                db_session.commit()
                flash('El permiso ha sido registrado con exito','info')
                return redirect('/permiso/administrarpermiso')
            except DatabaseError, e:
                if e.args[0].find('duplicate key value violates unique') != -1:
                    flash('Clave unica violada por favor ingrese otra combinacion de permiso con recurso unica' , 'error')
                else:
                    flash('Error en la Base de Datos' + e.args[0], 'error')
                return render_template('permiso/nuevopermiso.html', form=form)
        return render_template('permiso/nuevopermiso.html', form=form)
Example #27
0
def editar():
    """ Funcion para editar registros de la tabla Rol"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
     
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        r = db_session.query(Rol).filter_by(codigo=request.args.get('cod')).first()  
        form = RolFormulario(request.form, r)
        rol = db_session.query(Rol).filter_by(codigo=form.codigo.data).first()  
        if request.method == 'POST' and form.validate():
            try:
                form.populate_obj(rol)
                db_session.merge(rol)
                db_session.commit()
                flash('El rol ha sido modificado con exito', 'info')
                return redirect('/administrarrol')
            except DatabaseError, e:
                flash('Error en la Base de Datos' + e.args[0], 'error')
                return render_template('rol/editarrol.html', form=form)
        else:
            flash_errors(form)
        return render_template('rol/editarrol.html', form=form)
Example #28
0
def editarproyecto():
    """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        today = datetime.date.today()
        #init_db(db_session)
        r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first()
        p = db_session.query(Proyecto).filter_by(nombre=request.args.get('nom')).first()  
        form = ProyFormulario(request.form,p)
        proyecto = db_session.query(Proyecto).filter_by(nombre=form.nombre.data).first()
        form.id_usuario_lider.choices= [(u.id, u.nombre + " " + u.apellido) for u in db_session.query(Usuario).order_by(Usuario.nombre).all()]  
        mc = proyecto.id_usuario_lider
        if proyecto.estado == 'N' :
            form.estado.data = 'Nuevo'
        elif proyecto.estado == 'P' :
            form.estado.data = 'En Progreso'
        elif proyecto.estado == 'A' :
            form.estado.data = 'Anulado'
        elif proyecto.estado == 'F' :
            form.estado.data = 'Finalizado'
        if request.method == 'POST' and form.validate():
            if form.fecha_inicio.data > form.fecha_fin.data :
                flash('La fecha de inicio no puede ser mayor que la fecha de finalizacion','error')
                return render_template('proyecto/editarproyecto.html', form=form)
            if form.cant_miembros.data %2 == 0 :
                flash('La cantidad maxima de miembros debe ser impar','error')
                return render_template('proyecto/editarproyecto.html', form=form) 
            try:
                form.populate_obj(proyecto)
                proyecto.fecha_ultima_mod = today
                if form.estado.data == 'Nuevo' :
                    proyecto.estado = 'N'
                elif form.estado.data == 'En Progreso' :
                    proyecto.estado = 'P'
                elif form.estado.data == 'Anulado' :
                    proyecto.estado = 'A'
                elif form.estado.data == 'Finalizado' :
                    proyecto.estado = 'F'
                db_session.merge(proyecto)
                db_session.commit()
            
                if mc != proyecto.id_usuario_lider:
                    miembrosComite = db_session.query(MiembrosComite).filter_by(id_usuario=mc).filter_by(id_proyecto=proyecto.id).first()  
                    #init_db(db_session)
                    db_session.delete(miembrosComite)
                    db_session.commit()

                    lr = db_session.query(UsuarioRol).filter_by(id_rol=r2.id).filter_by(id_usuario=mc).filter_by(id_proyecto=proyecto.id).first()  
                    #init_db(db_session)
                    db_session.delete(lr)
                    db_session.commit()
                    
                    miembro = MiembrosComite(proyecto.id, proyecto.id_usuario_lider)
                    db_session.add(miembro)
                    db_session.commit()
            
                    li = UsuarioRol(r2.id, proyecto.id_usuario_lider, proyecto.id)
                    db_session.add(li)
                    db_session.commit()
                flash('El Proyecto ha sido modificado con exito','info')
                return redirect('/proyecto/administrarproyecto')
            except DatabaseError, e:
                flash('Error en la Base de Datos' + e.args[0],'error')
                return render_template('proyecto/editarproyecto.html', form=form)
        else:
            flash_errors(form)
        return render_template('proyecto/editarproyecto.html', form=form)
Example #29
0
def nuevoproyecto():
    """ Funcion para agregar registros a la tabla Proyecto""" 
    """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        today = datetime.date.today() 
        form = ProyFormulario(request.form)
        r = db_session.query(Rol).filter_by(codigo='COMITE CAMBIOS').first()
        r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first()
        form.id_usuario_lider.choices= [(u.id, u.nombre + " " + u.apellido) for u in db_session.query(Usuario).order_by(Usuario.nombre).all()]  
        if request.method == 'POST' and form.validate():
            if form.fecha_inicio.data > form.fecha_fin.data :
                flash('La fecha de inicio no puede ser mayor que la fecha de finalizacion','error')
                return render_template('proyecto/nuevoproyecto.html', form=form)
            if form.cant_miembros.data %2 == 0 :
                flash('La cantidad maxima de miembros debe ser impar','error')
                return render_template('proyecto/nuevoproyecto.html', form=form)
            try:
                pry = Proyecto(form.nombre.data, form.descripcion.data, 
                    'N', form.cant_miembros.data, 
                    form.fecha_inicio.data, form.fecha_fin.data, 
                    today, form.id_usuario_lider.data)
                db_session.add(pry)
                db_session.commit()
                mc = MiembrosComite(pry.id, form.id_usuario_lider.data)
                db_session.add(mc)
                db_session.commit()
                """ Asignar los roles comite cambios y lider proyecto en caso de que no existan"""
                if r == None :
                    r = Rol('COMITE CAMBIOS', 'COMITE CAMBIOS')
                    db_session.add(r)
                    db_session.commit()
                if r2 == None :
                    r2 = Rol('LIDER PROYECTO', 'LIDER PROYECTO')
                    db_session.add(r2)
                    db_session.commit()
                """ Asignar el rol lider proyecto """
                li = UsuarioRol(r2.id, pry.id_usuario_lider, pry.id)
                db_session.add(li)
                db_session.commit()
                """ Asignar los permisos de consulta al comite """                
                re = db_session.query(Recurso).filter_by(id_proyecto=pry.id).filter_by(nombre=pry.nombre).first()  
                if re == None :
                    re = Recurso(pry.nombre, pry.id)
                    db_session.add(re)
                    db_session.commit()
                per = db_session.query(Permiso).filter_by(id_recurso=re.id).filter_by(codigo='CONSULTAR PROYECTO').first()
                if per == None :
                    per = Permiso('CONSULTAR PROYECTO', 'CONSULTAR PROYECTO', re.id)
                    db_session.add(per)
                    db_session.commit()
                rp = db_session.query(RolPermiso).filter_by(id_rol=r.id).filter_by(id_permiso=per.id).first()
                if rp == None :
                    rp = RolPermiso(r.id, per.id)
                    db_session.add(rp)
                    db_session.commit()
                flash('El Proyecto ha sido registrado con exito','info')
                return redirect('/proyecto/administrarproyecto')
            except DatabaseError, e:
                if e.args[0].find('duplicate key value violates unique')!=-1:
                    flash('Clave unica violada por favor ingrese otro NOMBRE de Proyecto' ,'error')
                else:
                    flash('Error en la Base de Datos' + e.args[0],'error')
                return render_template('proyecto/nuevoproyecto.html', form=form)
        else:
            flash_errors(form) 
        return render_template('proyecto/nuevoproyecto.html', form=form)
Example #30
0
def agregarrolusu():
    """ Funcion para asignar Roles a un Usuario""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission =UserRol('ADMINISTRADOR')
    if permission.can()==False:
        flash('No posee los permisos suficientes para realizar la operacion', 'permiso')
        return render_template('index.html')
  
    if  request.args.get('usu') == None:
        id_usu= request.form.get('id')
    else:
        id_usu=request.args.get('usu')
    usu = db_session.query(Usuario).filter_by(id=id_usu).first()
    rolesv=  db_session.query(Rol).from_statement("select * from rol where id not in (select id_rol from usuario_rol where id_usuario="+str(usu.id)+
                                                  ") and rol.codigo <> 'LIDER PROYECTO' and rol.codigo <> 'COMITE CAMBIOS'").all()
    aux=[]
    for rl in rolesv :
        pro=  db_session.query(Proyecto).from_statement("select * from proyecto where id in "+
                                                        "(select id_proyecto from fase where id in"+
                                                            "(select id_fase from recurso where id in"+
                                                                "(select id_recurso from permiso where id in"+
                                                                    "(select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1)"+
                                                                ")))").first()
        aux.append(pro)
    form = UsuarioFormulario(request.form,usu)
    usuario = db_session.query(Usuario).filter_by(id=usu.id).first()     
    if request.method == 'POST' : 
        roles=request.form.getlist('selectrol')
        try:
            list_aux=[]
            for rl in roles :
                r = db_session.query(Rol).filter_by(id=rl).first()    
                list_aux.append(r)

            if list_aux == None or list_aux == []:
                flash('Debe seleccionar un Rol','info')
                return render_template('usuario/administrarusuario.html')         
                             
            for rl in list_aux:
                recu = db_session.query(Recurso).join(Permiso, Permiso.id_recurso == Recurso.id).join(RolPermiso, Permiso.id ==RolPermiso.id_permiso).filter(RolPermiso.id_rol == rl.id).first()
                if recu != None:
                    proyecto = db_session.query(Proyecto).join(Recurso, Recurso.id_proyecto == Proyecto.id ).filter(Proyecto.id == recu.id_proyecto).first()
                    if proyecto == None:
                        proyecto = db_session.query(Proyecto).join(Fase, Fase.id_proyecto == Proyecto.id).join(Recurso, Recurso.id_fase == Fase.id).filter(Recurso.id_fase == recu.id_fase).first()
                    if proyecto != None:
                        rousu = UsuarioRol(rl.id, usuario.id, proyecto.id)
                        db_session.add(rousu)
                        db_session.commit()
                    else:
                        flash('El Rol aun no tiene asignado Permisos','info')   
                        return redirect('/usuario/administrarusuario')
                else:
                    if rl.codigo =='ADMINISTRADOR':
                        rousu = UsuarioRol(rl.id, usuario.id, None)
                        db_session.add(rousu)
                        db_session.commit()
                #===============================================================
                # re = db_session.query(Recurso).from_statement("select * from recurso where id in ( select id_recurso from permiso where id in " +
                #    " (select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1))").first() 
                #===============================================================
            flash('Se agrego el Rol con Exito','info')   
            return redirect('/usuario/administrarusuario')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'error')
        return render_template('usuario/agregarrolusu.html', form=form, roles= rolesv, pro=aux)