예제 #1
0
def getPanelAdminSitio():
    if auth.authenticated():
        User.db = get_db()
        if (User.tiene_permiso(session['id'], 'administrativo_index')):
            permisos = User.get_permisos(
                session['id'])  #Session user es el email unico del usuario

            g.user = session[
                'user']  #En la documentación no detallaban el por qué de esta lína, pero sí que era necesaria para las paginas restringidas
            #Obtiene permisos del usuario
            User.db = get_db()
            permisos = User.get_permisos(
                session['id'])  #Session user es el email unico del usuario
            #Obtiene informacion del sitio (Estado y paginacion)
            ConfigSitio.db = get_db()
            infositio = ConfigSitio.all()

            return render_template(
                'auth/panel_components/administracion_sitio.html',
                permisos=permisos,
                nombre=session['nombre'],
                apellido=session['apellido'],
                infositio=infositio)
        else:
            abort(401)
    else:
        return redirect(url_for('auth_login'))
예제 #2
0
def getPanelHorario():
    if auth.authenticated():
        #Obtiene permisos del usuario
        User.db = get_db()
        if (User.tiene_permiso(session['id'], 'horario_index')):
            permisos = User.get_permisos(
                session['id'])  #Session user es el email unico del usuario
            #Obtiene informacion del sitio (Estado y paginacion)
            Horario.db = get_db()
            horarios = Horario.all()
            Clase.db = get_db()
            clases = Clase.all()
            Nucleo.db = get_db()
            nucleos = Nucleo.all()
            Docente.db = get_db()
            docente_responsable_taller = Docente.allDocenteTaller()
            return render_template(
                'auth/panel_components/clases.html',
                permisos=permisos,
                horarios=horarios,
                clases=clases,
                nucleos=nucleos,
                docente_responsable_taller=docente_responsable_taller)
        else:
            abort(401)
    else:
        return redirect(url_for('auth_login'))
예제 #3
0
def editando():
    Permiso = habilitedAccesComedor()
    if Permiso == 'true':
        Comedor.db = get_db()
        User.db = get_db()
        Comedor_usuario.db = get_db()
        data = request.form
        exist = User.find_user(data['user'])
        com = Comedor.find_comedor_by_id(int(data['idComedor']))
        ok = False
        if not exist:
            ok = True
        elif str(exist['id']) == str(data['idRef']):
            ok = True
        if ok:
            file = request.files['file']
            if not upload_file('comedor', str(data['idComedor']), file):
                Comedor.edite(data, com['foto'])
            else:
                Comedor.edite(data, file.filename)
            User.editeRef(data)
            flash(["La informacion se actualizo correctamente", 'green'])
            return redirect(
                url_for('comedor_profile', idComedor=data['idComedor']))
        flash(["Ya existe un usuario con ese nombre, elija otro!", 'red'])
        return redirect(url_for('comedor_profile',
                                idComedor=data['idComedor']))
    return render_template(Permiso)
예제 #4
0
파일: user.py 프로젝트: nicoomenz/proyecto
def modificar():
    if not authenticated(session):
        abort(401)

    permisos = User.misPermisos(session['id'])

    pag = request.args.get('pagina')
    data = request.form
    Configuracion.db = get_db()
    config = Configuracion.all()

    Rol.db = get_db()
    roles = Rol.all()
    pag = request.args.get('pagina')

    Nivel.db = get_db()
    niveles = Nivel.all()

    User.db = get_db()

    User.modificar(
        request.form,
        pag,
        config['paginacion'],
    )  #agarro los datos del formulario

    users = User.all(pag, config['paginacion'])
    rango = User.rangoAll(config['paginacion'])

    return redirect(url_for('user_index', pagina=0))
예제 #5
0
파일: user.py 프로젝트: nicoomenz/proyecto
def delete():
    if not authenticated(session):
        abort(401)

    permisos = User.misPermisos(session['id'])
    pag = request.args.get('pagina')

    User.db = get_db()
    id_user = request.args.get('id')

    Configuracion.db = get_db()
    config = Configuracion.all()

    user = User.all(pag, config['paginacion'])

    rango = User.rangoAll(config['paginacion'])

    User.delete(id_user, pag, config['paginacion'])

    return render_template('user/index.html',
                           users=user,
                           pages=config['paginacion'],
                           rango=rango,
                           vista='user_find',
                           permisos=permisos)
예제 #6
0
def get(id_data):
    #Auth check
    auth.authenticated_or_401()

    #Chequea permiso
    User.db = get_db()
    if (not User.has_permission(session['id'],'usuario_show')):
        abort(401)
    else:
        #Retorno de data
        User.db = get_db()
        user = User.get(id_data)
        roles = user_roles(user['user_id'])

        return_user = {
            'active': user['active'],
            'email': user['email'],
            'google_user': user['google_user'],
            'lastname': user['lastname'],
            'name': user['name'],
            'user_id': user['user_id'],
            'username':	user['username'],
            'is_admin': roles['is_admin'],
            'is_teacher': roles['is_teacher'],
            'is_preceptor': roles['is_preceptor']
        }
        return jsonify(return_user)
예제 #7
0
def createIsValid(formCU, oldEmail=None, oldUsuario=None, usuarioSesion=False):
    ok = True
    msj = ""
    if not formCU.validate():
        ok = False
    if (not re.match(
            r"^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$",
            request.form['email'])):
        ok = False
        formCU.email.errors.append("Ingrese un email válido")
    else:
        #valido si existe el email
        if oldEmail == None or oldEmail != request.form['email']:
            if User.find_by_email(request.form['email']):
                ok = False
                formCU.email.errors.append("El email ya existe")
    if (not re.match(r"^[a-zA-Z0-9]*$", request.form['usuario'])):
        ok = False
        formCU.usuario.errors.append(
            "Solo puede contener caracteres alfanuméricos")
    else:
        #valido si existe el nombre de usuario
        if oldUsuario == None or oldUsuario != request.form['usuario']:
            if User.find_by_username(request.form['usuario']):
                ok = False
                formCU.usuario.errors.append("El usuario ya existe")
    if not usuarioSesion and not request.form.getlist("roles"):
        ok = False
        msj = "Seleccione al menos un rol"
    if not ok:
        raise Exception(msj)
    return ok
예제 #8
0
def create():
    Permiso = habilitedAcces()
    if Permiso == 'true':
        Comedor.db = get_db()
        User.db = get_db()
        Comedor_usuario.db = get_db()
        data = request.form
        exist = User.find_user(data['user'])
        if not exist:
            file = request.files['file']
            Comedor.create(data, file.filename)
            User.createRef(data)
            Comedor_usuario.create(Comedor.last_comedor()['id'],
                                   User.last_user()['id'])
            filename = Comedor.last_comedor()
            upload_file('comedor', str(filename['id']), file)
            flash([
                "El comedor fue creado, pero  debe ser confirmado por el Admin",
                'green'
            ])
            # enviar('Nuevo comedor','Un nuevo comedor se ha registrado y requiere de validacion del administrador.')
            return redirect(
                url_for('altaComedor',
                        comedor=Comedor.last_comedor()['id'],
                        user=User.last_user()['id']))
        flash(["Ya existe un usuario con ese nombre, elija otro!", 'red'])
        return redirect(url_for('altaComedor'))
    return render_template(Permiso)
예제 #9
0
def delete():
    Permiso = habilitedAccesAdmin()
    if Permiso == 'true':
        Comedor.db = get_db()
        Comedor_usuario.db = get_db()
        Evento.db = get_db()
        Necesidad.db = get_db()
        User.db = get_db()
        usuario = Comedor_usuario.find_user_by_comedorid(
            request.args.get('idComedor'))
        evento = Evento.find_evento_by_user(usuario['referente_id'],
                                            datetime.now())
        necesidad = Necesidad.find_tipo_necesidad_by_comedorid(
            request.args.get('idComedor'))
        if len(evento) == 0 and len(necesidad) == 0:
            Comedor_usuario.delete(request.args.get('idComedor'),
                                   usuario['referente_id'])
            Comedor.delete(request.args.get('idComedor'))
            User.delete(usuario['referente_id'])
            flash(["El comedor se elimino exitosamente", 'green'])
            return redirect(url_for('comedor_list'))
        else:
            flash([
                "El comedor no puede eliminarse, tiene eventos o necesidades pendientes",
                'red'
            ])
            return redirect(url_for('comedor_list'))
    return render_template(Permiso)
예제 #10
0
def google_callback(client):
    User.db = get_db()

    code = request.args.get("code")
    google_provider_cfg = requests.get(Config.GOOGLE_DISCOVERY_URL).json()
    token_endpoint = google_provider_cfg["token_endpoint"]

    token_url, headers, body = client.prepare_token_request(
        token_endpoint,
        authorization_response=request.url,
        redirect_url=request.base_url,
        code=code)
    token_response = requests.post(
        token_url,
        headers=headers,
        data=body,
        auth=(Config.GOOGLE_CLIENT_ID, Config.GOOGLE_CLIENT_SECRET),
    )

    # Parse the tokens!
    client.parse_request_body_response(json.dumps(token_response.json()))
    userinfo_endpoint = google_provider_cfg["userinfo_endpoint"]
    uri, headers, body = client.add_token(userinfo_endpoint)
    userinfo_response = requests.get(uri, headers=headers, data=body)

    # raise Exception(userinfo_response.json())
    response = userinfo_response.json()

    user = User.find_by_email(response["email"])
    is_new = False
    status = True
    if not user:
        # google => oeberisso
        # ------------------------
        # given_name => first_name
        # family_name => last_name
        # email => email

        username, dom = response["email"].split('@')
        User.create_from_google(response["email"], username,
                                response["given_name"],
                                response["family_name"])
        msg = "Se creo el usuario"
        is_new = True

    if not is_new and status and user["active"] == 0:
        msg = "El usuario no se encuentra activo."
        status = False

    if status:
        session["user"] = username if is_new else user["username"]
        if not is_new:
            msg = "La sesión se inició correctamente."

    return jsonify({
        "status": status,
        "msg": msg,
        "username": session["user"],
        "email": response["email"],
    })
예제 #11
0
def delete():
    if not authenticated(session):
        return render_template('auth/login.html')
    ok = True
    if not pageState():
        ok = False
        for permiso in session['permisos']:
            if "VER_EN_MANTENIMIENTO" == permiso['nombre']:
                ok = True
    if not ok:
        return render_template('error/mantenimiento.html')

    try:

        User.db = get_db()
        User.db.autocommit = False
        auxUser = User.get_user_by_email(request.form['hiddenEmailD'])
        User.delete(auxUser['id'])
        User.remove_roles_de_usuario(auxUser['id'])

        User.db.commit()

        flash("Se eliminó con éxito", "success")
        return redirect(url_for('listado_usuarios'))

    except Exception as e:
        flash(str(e), "danger")
        User.db.rollback()
        return redirect(url_for('listado_usuarios'))
예제 #12
0
def delete():
    if not authenticated(session):
        abort(401)  


    permisos = User.misPermisos(session['id'])
    pag= request.args.get('pagina')

    User.db = get_db()
    id_user= request.args.get('id')

    Estudiante.db = get_db()
    id_student= request.args.get('id')

    
    Configuracion.db = get_db()
    config = Configuracion.all()
    pag= request.args.get('pagina')

    user = User.all(pag,config['paginacion'])

    rango= User.rangoAll(config['paginacion'])

    Estudiante.delete(id_student,pag,config['paginacion'])
    estudiantes=Estudiante.all(pag,config['paginacion'])
    return render_template('student/index.html', estudiantes=estudiantes, pages=config['paginacion'],rango=rango,vista='student_delete',permisos=permisos)
예제 #13
0
def authenticate_by_google(user_info):
    User.db = get_db()
    user = User.find_by_email(user_info['email'])
    if not user:
        User.create_by_google(user_info)
        user = User.find_by_username(user_info['email'])
    login(user)
    return True
예제 #14
0
def create():
    errors = form_validator.validate(register.rules, request.json, True)
    if not errors:
        User.db = get_db()
        User.create(request.json)
        return jsonify({}), 201
    else:
        return jsonify({"errors": errors}), 422
예제 #15
0
def all():
    #Auth check
    auth.authenticated_or_401()
    
    #Chequea permiso
    User.db = get_db()
    if (not User.has_permission(session['id'],'usuario_index')):
        abort(401)
    else:
        User.db = get_db()
        return jsonify(User.all())
예제 #16
0
def delete(id_data):
    if not authenticated(session):
        abort(401)
    #Chequea permiso
    User.db = get_db()
    if (User.tiene_permiso(session['id'], 'usuario_destroy')):
        User.delete_roles(id_data)
        User.delete(id_data)
        flash("Se eliminó el usuario correctamente", 'success')
        return redirect(url_for('panel_usuarios'))
    else:
        abort(401)
예제 #17
0
def permissions():
    #Auth check
    auth.authenticated_or_401()
    #Listado de rutas
    user_permissions = []
    User.db = get_db()
    if (not User.has_roles(session['id'])):
        return jsonify(user_permissions)
    else:
        user_permissions = User.permissions(session['id'])
    #Returning data
    return jsonify(user_permissions)
예제 #18
0
def create():

    form = UserCreateForm(request.form)

    if form.is_valid():
        User.create(form.values)
        flash(form.success_message(), 'success')
        return redirect(url_for('user_index'))
    else:
        for error in form.error_messages():
            flash(error, 'danger')
        return new(user=form.values)
예제 #19
0
def update_user_status():
    #Auth check
    auth.authenticated_or_401()

    if request.method == "POST":
        User.db = get_db()        
        #Chequea permiso
        if (User.has_permission(session['id'],'usuario_update')):
            #Valida campos
            if (request.form['active'] == '0' or request.form['active'] == '1'):
                User.update_user_status(request.form)
                return {'status': 'success', 'message': 'Se actualizó el estado del usuario'}
        else:
            abort(401)
예제 #20
0
def docentes_horario():
    if not authenticated(session):
        abort(401)
    User.db = get_db()
    permisos = User.misPermisos(session['id'])

    User.db = get_db()
    Horario.db = get_db()
    docentes = User.docentes()
    horarios = Horario.all()
    return render_template('horario/asignarDocentesHorario.html',
                           docentes=docentes,
                           horarios=horarios,
                           permisos=permisos)
예제 #21
0
def actualizarEstado():
    Permiso = habilitedAccesAdmin()
    if Permiso == 'true':
        User.db=get_db()
        Sitio.db=get_db()
        User.updateRol(request.args.get('rol'),request.args.get('idUser'))
        user = User.find_user_by_id(request.args.get('idUser'))
        if request.args.get('rol') == '1':
            flash(['El usuario fue aceptado en el sistema', 'green'])
            # enviar('Usuario Aceptado','El usuario ha sido aceptado y ahora posee acceso al sistema.',user['mail_u'])
        else:
            flash(['El usuario fue rechazado', 'red'])
            # enviar('Usuario Rechazado','El usuario ha sido rechazado.',user['mail_u'])  
        return redirect(url_for('usuario_list_p'))
    return render_template(Permiso)  
예제 #22
0
def listadoUsuarios(params={"init": 0}, function=1, activo=None, nombre=''):
    if not authenticated(session):
        return render_template('auth/login.html')
    ok = True
    if not pageState():
        ok = False
        for permiso in session['permisos']:
            if "VER_EN_MANTENIMIENTO" == permiso['nombre']:
                ok = True
    if not ok:
        return render_template('error/mantenimiento.html')
    if not usuarioTienePermiso("LISTADO_USUARIOS"):
        return redirect(url_for('pages_home'))

    Pages.db = get_db()
    paginado = Pages.get_paginado()
    params['pag'] = int(paginado['cuerpo'])

    if request.method == 'POST' and 'init' in request.form.keys() and int(
            request.form['init']) >= 0:
        params['init'] = int(request.form['init'])

    filtro = ''

    if ('estadoFiltro' in request.form.keys()):
        if (request.form['estadoFiltro'] == '1'
                or request.form['estadoFiltro'] == '0'):
            activo = request.form['estadoFiltro']
            function = 0
            filtro = request.form['estadoFiltro']
    if ('nombreFiltro' in request.form.keys()):
        if (request.form['nombreFiltro']
                and request.form['nombreFiltro'].strip()):
            nombre = request.form['nombreFiltro']
            function = 0
            filtro = request.form['nombreFiltro']

    User.db = get_db()
    user = User.get_user_by_email(session['email'])
    users = User.get_listado(user['id'], activo, nombre)

    return render_template('user/listado.html',
                           users=users,
                           params=params,
                           nombreFiltro=nombre,
                           activoFiltro=activo,
                           function=function,
                           filtro=filtro)
예제 #23
0
        def decorated_function(*args, **kwargs):
            if not authenticated(session):
                return redirect(url_for('auth_login'))

            elif not User.tiene_permiso(authenticated(session), permiso):
                abort(401)
            return f(*args, **kwargs)
예제 #24
0
def userUpdateTemp():
    if not authenticated(session):
        return render_template('auth/login.html')
    ok = True
    if not pageState():
        ok = False
        for permiso in session['permisos']:
            if "VER_EN_MANTENIMIENTO" == permiso['nombre']:
                ok = True
    if not ok:
        return render_template('error/mantenimiento.html')
    if not usuarioTienePermiso("MODIFICAR_USUARIO"):
        return redirect(url_for('pages_home'))

    User.db = get_db()
    user = User.get_user_by_email(request.form['email'])
    Roles.db = get_db()
    roles = Roles.all()
    usuarioSesion = user['id'] == session['id']
    rolesUsuario = Roles.get_roles(user['id'])

    return render_template('user/modificarUsr.html',
                           user=user,
                           roles=roles,
                           usuarioSesion=usuarioSesion,
                           rolesUsuario=rolesUsuario)
예제 #25
0
def update():

    User.db = get_db()
    permisos = User.misPermisos(session['id'])

    id_horario = request.args.get('id')

    Ciclo_lectivo_taller.db = get_db()
    ciclos_talleres = Ciclo_lectivo_taller.all()

    Nucleo.db = get_db()
    nucleos = Nucleo.all()

    Dia.db = get_db()
    dias = Dia.all()

    Horario.db = get_db()
    horario = Horario.searchHorario(id_horario)

    return render_template('horario/update.html',
                           permisos=permisos,
                           nucleos=nucleos,
                           dias=dias,
                           ciclos_talleres=ciclos_talleres,
                           horario=horario)
예제 #26
0
def storeTallerCiclo():
    if not authenticated(session):
        abort(401)
    #Chequea permiso
    User.db = get_db()
    if (User.tiene_permiso(session['id'], 'administrativo_new')):
        if request.method == "POST" and forms.ValidateCicloTaller(
                request.form).validate():
            Ciclo.db = get_db()
            Taller.db = get_db()
            if Ciclo.cicloNoTieneTaller(request.form):
                Taller.storeConTaller(request.form)
                flash("Se agrego el taller al ciclo lectivo correctamente",
                      'success')
            else:
                flash(
                    "El taller ya esta asignado al ciclo lectivo seleccionado",
                    'error')
        else:
            flash(
                'Verifica los campos obligatorios. No ingreses valores no permitidos',
                'error')
        return redirect(url_for('panel_talleres'))
    else:
        abort(401)
예제 #27
0
def authenticated_permission(permission):
    authenticated_object = {'authenticated': False}
    User.db = get_db()
    if (auth.authenticated()) and (User.has_permission(session['id'],
                                                       permission)):
        authenticated_object = {'authenticated': True}
    return jsonify(authenticated_object)
예제 #28
0
 def get(self):
     start = int(request.args['start'])
     page = 1
     if start != 0:
         page = start / Configuracion.get_config().registros_por_pagina + 1
     order = {
         'column':
         request.args['columns[' + request.args['order[0][column]'] +
                      '][data]'],
         'dir':
         request.args['order[0][dir]']
     }
     users = User.all(page, order)
     usuarios = []
     for user in users.items:
         u = {
             "id": user.id,
             "first_name": user.first_name,
             "last_name": user.last_name,
             "email": user.email
         }
         usuarios.append(u)
     return {
         "draw": request.args['draw'],
         "recordsTotal": users.total,
         "recordsFiltered": users.total,
         "data": usuarios
     }
예제 #29
0
def update():
    #Auth check
    auth.authenticated_or_401()

    if request.method == 'POST':
        #Chequea permiso
        User.db = get_db()
        if (not User.has_permission(session['id'], 'configuration_all')):
            abort(401)
        else:
            #Chequea el metodo y valida el formulario
            post_data = request.get_json()
            form = forms.ValidateConfiguration.from_json(
                post_data, skip_unknown_keys=False)
            if not form.validate():
                response_object = {
                    'status':
                    'warning',
                    'message':
                    'Informacion inválida, solo puede ingresarse un titulo(máximo 255 char), email(máximo 255 char) y descripción(máximo 1000 char)'
                }
            else:
                Configuration.db = get_db()
                Configuration.update(post_data)
                response_object = {
                    'status':
                    'success',
                    'message':
                    'Se actualizó la información del sitio correctamente'
                }
            return jsonify(response_object)
예제 #30
0
def store():
    if not authenticated(session):
        abort(401)
    #Chequea permiso
    User.db = get_db()
    if (User.tiene_permiso(session['id'], 'administrativo_new')):
        if request.method == "POST" and forms.ValidateCiclo(
                request.form).validate():
            if int(request.form['año']) < int(1990) or int(
                    request.form['año']) > int(2025):
                flash(
                    'Verifica los campos obligatorios. No ingreses valores no permitidos',
                    'error')
            else:
                Ciclo.db = get_db()
                if not Ciclo.semestreExiste(request.form):
                    Ciclo.store(request.form)
                    flash("Ciclo lectivo agregado correctamente", 'success')
                else:
                    flash("El semestre ya tiene un ciclo lectivo asignado",
                          'error')
        else:
            flash(
                'Verifica los campos obligatorios. No ingreses valores no permitidos',
                'error')
        return redirect(url_for('panel_ciclos'))
    else:
        abort(401)