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')
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')
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')