예제 #1
0
def update():
    s_config = siteconfig.get_config()
    if not has_permission("docente_update", session) or (
            s_config["modo_mantenimiento"] == 1
            and not has_role("administrador", session)):
        abort(401)

    # Validación - Fill choices
    choices = forms_docente.choices()
    form = DocenteForm(choices)

    op_response = dict()

    if form.validate_on_submit():
        params = request.form.to_dict()

        if "username" in params:

            user = User.find_by_user(params["username"])
            if user:
                params["usuario_id"] = user["id"]

        params["fecha_nacimiento"] = datetime.strptime(
            params["fecha_nacimiento"], "%d/%m/%Y").date()

        updated = Docente.update(params)

        if updated:
            op_response["msg"] = "Se ha modificado al docente con éxito"
            op_response["type"] = "success"
        else:
            op_response["msg"] = "Ha ocurrido un error al editar al docente"
            op_response["type"] = "error"
            abort(make_response(jsonify(op_response), 422))

    else:
        if len(form.errors) >= 2:
            op_response[
                "msg"] = "Complete todos los datos del docente a modificar"
            op_response["type"] = "error"
        else:
            error_msg = "".join(list(form.errors.values())[0]).strip("'[]")
            op_response["msg"] = error_msg
            op_response["type"] = "error"

        abort(make_response(jsonify(op_response), 400))

    return make_response(jsonify(op_response), 200)
def new():
    s_config = siteconfig.get_config()
    if not has_permission("preceptor_new", session) or (
        s_config["modo_mantenimiento"] == 1 and not has_role("administrador", session)
    ):
        abort(401)

    # Validación - Fill choices
    choices = forms_preceptor.choices()
    form = PreceptorForm(choices)

    op_response = dict()

    if form.validate_on_submit():
        params = request.form.to_dict()
        params["fecha_nacimiento"] = datetime.strptime(
            params["fecha_nacimiento"], "%d/%m/%Y"
        ).date()

        if "username" in params:

            user = User.find_by_user(params["username"])
            if user:
                params["usuario_id"] = user["id"]

        created = Preceptor.create(params)

        if created:
            op_response["msg"] = "Se ha agregado al preceptor exitosamente"
            op_response["type"] = "success"
        else:
            op_response["msg"] = "Ha ocurrido un error al crear al preceptor"
            op_response["type"] = "error"
            abort(make_response(jsonify(op_response), 422))

    else:
        error_msg = "".join(list(form.errors.values())[0]).strip("'[]")
        op_response["msg"] = error_msg
        op_response["type"] = "error"
        abort(make_response(jsonify(op_response), 400))

    return make_response(jsonify(op_response), 201)
def authenticate():

    form = LoginForm()

    if form.validate_on_submit():
        params = request.form

        user = User.find_by_user(params["username"])

        if (
            user
            and user["activo"] == 1
            and bcrypt.check_password_hash(user["password"], params["password"])
        ):

            config = siteconfig.get_config()
            modo_mantenimiento = config["modo_mantenimiento"]

            if modo_mantenimiento == 1 and (
                not User.has_role(params["username"], "administrador")
            ):
                flash("Sitio en mantenimiento", "error")
            else:
                session["user"] = user["username"]
                flash("La sesión se inició correctamente", "success")
                return redirect(url_for("user_dashboard"))

        elif user and user["activo"] == 0:
            flash("Su cuenta está bloqueada", "error")
        else:
            flash("Usuario o clave incorrecto", "error")

    # TODO: Mensajes de error
    else:
        if len(form.errors) == 2:
            flash("Complete los campos para poder loguearse", "error")
        else:
            error_msg = "".join(list(form.errors.values())[0]).strip("'[]")
            flash(error_msg, "error")

    return redirect(url_for("auth_login"))
예제 #4
0
def profile():
    s_config = siteconfig.get_config()
    if not authenticated(session) or (s_config["modo_mantenimiento"] == 1 and
                                      not has_role("administrador", session)):
        abort(401)

    username = session.get("user")

    user = User.find_by_user(username)

    roles = User.user_roles(username)

    return render_template(
        "user/account.html",
        username=user["username"],
        email=user["email"],
        password=user["password"],
        first_name=user["first_name"],
        last_name=user["last_name"],
        roles=roles,
    )