示例#1
0
def update_user(object_id):
    form = EditUserForm(request.form)
    if form.validate():
        u = User.get_by_id(object_id)
        if u:
            u.update(email=thwart(form.email.data),
                     username=thwart(form.username.data),
                     first_name=thwart(form.first_name.data),
                     last_name=thwart(form.last_name.data))
            if form.password.data != '':
                u.set_password(thwart(form.password.data))
            if form.active.data != u.active:
                activate(u) if form.active.data else deactivate(u)
            u.set_roles(list(form.user_roles.data))
            try:
                u.updated()
                dbSession.commit()
            except IntegrityError:
                flash("Ya existe un usuario con ese correo/username", "danger")
                return render_template('user/update.html',
                                       form=form,
                                       user_id=object_id)
            flash("Usuario {} actualizado exitosamente.".format(u.username),
                  "success")
            return redirect(url_for("user_index"))
    if form.errors:
        display_errors(
            form.errors
        )  # si hay errores redirecciona a la pagina de crear usuario y muestra los errores.
    flash("Error al validar formulario", "danger")
    return redirect(url_for("user_index"))
示例#2
0
def authenticate():
    """authenticate() realiza los chequeos necesarios para autorizar el ingreso del usuario al sistema.
    La funcion thwart del paquete pymsql se encarga de sanitizar el parametro para evitar posibles sql injections"""

    sis_config = Sistema.get_sistema()
    form = LoginForm(request.form)
    if form.validate():
        username = thwart(form.username.data.lower())
        password = thwart(form.password.data.lower())

        app.logger.info("username {}".format(username))

        user = User.query.filter(User.email == username).first(
        )  # primero compruebo el que exista el correo, sino voy por el nombre de usuario
        if user is not None:
            if user.check_password(
                    password
            ) is False:  # pregunto si la pw conincide con el hash almacenado
                flash("Usuario/Email o Clave incorrecto.", "danger")
                return redirect(url_for('auth_login'))
        else:
            # si llegué aca es porque no encontro el mail, pruebo buscando el username
            user = User.query.filter(User.username == username).first()
            if user is None:
                flash("Usuario/Email o Clave incorrecto.", "danger")
                return redirect(url_for('auth_login'))
            else:
                if user.check_password(password) is False:
                    flash("Usuario/Email o Clave incorrecto.", "danger")
                    return redirect(url_for('auth_login'))

        if not user.active:
            flash("La cuenta que has ingresado se encuentra inactiva.",
                  "danger")
            return redirect(url_for('auth_login'))

        if not sis_config.habilitado and not user_has_permission(
                'system_modify_config'):
            flash(
                "No puedes loguearte porque el sitio no esta disponible momentaneamente.",
                "danger")
            return redirect(url_for('home'))

        app.logger.info("user: %s", user)
        set_session(user)
        flash("La sesión se inició correctamente.", "success")
        return redirect(url_for("home"))

    if form.errors:
        display_errors(form.errors)
        return redirect(url_for("auth_login"))
示例#3
0
def create():
    """ Da de alta un centro en la base de datos."""
    form = CreateCenterForm()
    app.logger.info(form.data)
    if form.validate():
        center = Center()
        form.populate_obj(center)
        center.protocol = request.files['protocol'].read()
        dbSession.add(center)
        dbSession.commit()
    if form.errors:
        display_errors(form.errors)
        return redirect(url_for("center_new"))
    return redirect(url_for("center_index", page=1))
示例#4
0
def create_view(center_id):
    """Recibe el id del centro al que pertenece el turno. Crea un turno siempre
    y cuando haya disponibilidad en el día elegido."""
    form = CreateShiftForm()
    if form.validate():
        shift = Shifts()
        form.populate_obj(shift)
        shift.center_id = center_id
        try:
            center = Center.get_by_id(shift.center_id)
            Shifts.create_shift(shift, center)
            flash("Turno agregado exitosamente", "success")
        except (NoResultFound, ValueError) as err:
            flash(err, "danger")
    if form.errors:
        display_errors(form.errors)
        return redirect(url_for("turnos_new", center_id=center_id))
    return redirect(url_for("turnos_index", page=1))
示例#5
0
def update_center(object_id):
    """ edita los atributos del centro con los datos obtenidos del formulario """
    form = CreateCenterForm(request.form)
    if form.validate():
        try:
            center = Center.get_by_id(object_id)
        except NoResultFound as e:
            flash(e, 'danger')
            return redirect(url_for("center_index"))
        form.populate_obj(center)
        center.protocol = request.files['protocol'].read()
        dbSession.commit()
    elif form.errors:
        display_errors(form.errors)
        flash("Error al validar formulario", "danger")
        return update_center_form(object_id)
    flash("se guardaron los cambios", "info")
    return redirect(url_for("center_index"))
示例#6
0
def update():
    form = SistemaForm(formdata=request.form)
    if form.validate_on_submit() and request.method == "POST":
        sistema = Sistema.get_sistema()
        sistema.titulo = thwart(form.titulo.data)
        sistema.descripcion = thwart(form.descripcion.data)
        sistema.bienvenida = thwart(form.bienvenida.data)
        sistema.email = thwart(form.email.data)
        sistema.cant_por_pagina = form.cant_por_pagina.data
        sistema.habilitado = form.habilitado.data
        sistema.__update__()
        dbSession.commit()
        flash("Configuración actualizada correctamente!", "success")
        # return redirect(url_for(''))
    else:
        display_errors(form.errors)
        # return redirect(url_for())
    return redirect(url_for('system_configure'))
示例#7
0
def create():
    """ Da de alta un usuario en la base de datos."""
    form = CreateUserForm(request.form)
    if form.validate():
        user = User(email=thwart(form.email.data),
                    username=thwart(form.username.data),
                    first_name=thwart(form.first_name.data),
                    last_name=thwart(form.last_name.data),
                    active=form.active.data)
        user.set_roles(list(form.user_roles.data))
        user.set_password(thwart(
            form.password.data))  # envio la pw para guardar el hash en la db.
        dbSession.add(user)
        dbSession.commit()
    if form.errors:
        display_errors(
            form.errors
        )  # si hay errores redirecciona a la pagina de crear usuario y muestra los errores.
        return redirect(url_for("user_new"))

    return redirect(url_for("user_index", page=1))