Ejemplo n.º 1
0
def perfilEdit(perfil_id: int):
    data = request.get_json()

    current_user = get_jwt_identity()
    user = Usuario.query.get(current_user)

    # guarantee that user can only view itself
    if user is None:
        return jsonify({
            "message":
            Messages.REGISTER_NOT_FOUND.format(current_user),
            "error":
            True
        })
    if user.cargo_id == 2:
        perfil_id = user.perfil_id

    # check if there is already a user registered, excluding itself
    cpf = fieldsFormatter.CpfFormatter().clean(data["cpf"])
    pis = fieldsFormatter.PisFormatter().clean(data["pis"])
    perfil = Perfil.query.filter(
        or_(Perfil.cpf == cpf,
            Perfil.pis == pis)).filter(Perfil.id != perfil_id).first()
    if perfil is not None:
        return jsonify({
            "message": Messages.ALREADY_EXISTS.format("CPF/PIS"),
            "error": True
        })

    perfil = Perfil.query.get(perfil_id)

    if not perfil:
        return jsonify({
            "message": Messages.REGISTER_NOT_FOUND.format(perfil_id),
            "error": True
        })

    perfil.nome = data.get("nome")
    perfil.pis = fieldsFormatter.PisFormatter().clean(data.get("pis")),
    perfil.cpf = fieldsFormatter.CpfFormatter().clean(data.get("cpf")),
    perfil.cep = fieldsFormatter.CepFormatter().clean(data.get("cep"))
    perfil.rua = data.get("rua")
    perfil.numero = data.get("numero")
    perfil.complemento = data.get("complemento")
    perfil.cidade_id = data.get("cidade_id")

    try:
        db.session.commit()
        return jsonify({
            "message":
            Messages.REGISTER_SUCCESS_UPDATED.format("Perfil"),
            "error":
            False,
        })
    except exc.IntegrityError:
        db.session.rollback()
        return jsonify({
            "message": Messages.REGISTER_CHANGE_INTEGRITY_ERROR,
            "error": True
        })
Ejemplo n.º 2
0
def perfilAdd():

    data = request.get_json()

    # check if there is already a user registered
    cpf = fieldsFormatter.CpfFormatter().clean(data["cpf"])
    pis = fieldsFormatter.PisFormatter().clean(data["pis"])
    perfil = Perfil.query.filter(or_(Perfil.cpf == cpf,
                                     Perfil.pis == pis)).first()
    if perfil is not None:
        return jsonify({
            "message": Messages.ALREADY_EXISTS.format("CPF/PIS"),
            "error": True
        })

    perfil = Perfil(
        nome=data.get("nome"),
        pis=fieldsFormatter.PisFormatter().clean(data.get("pis")),
        cpf=fieldsFormatter.CpfFormatter().clean(data.get("cpf")),
        cep=fieldsFormatter.CepFormatter().clean(data.get("cep")),
        rua=data.get("rua"),
        numero=data.get("numero"),
        complemento=data.get("complemento"),
        cidade_id=data.get("cidade_id"),
    )

    db.session.add(perfil)

    try:
        db.session.commit()
        return jsonify({
            "message":
            Messages.REGISTER_SUCCESS_CREATED.format("Perfil"),
            "error":
            False,
        })
    except exc.IntegrityError:
        db.session.rollback()
        return jsonify({
            "message": Messages.REGISTER_CREATE_INTEGRITY_ERROR,
            "error": True
        })
Ejemplo n.º 3
0
 def to_dict(self):
     data = {
         "id": self.id,
         "nome": self.nome,
         "pis": fieldsFormatter.PisFormatter().format(self.pis),
         "cpf": fieldsFormatter.CpfFormatter().format(self.cpf),
         "cep": fieldsFormatter.CepFormatter().format(self.cep),
         "rua": self.rua,
         "numero": self.numero,
         "complemento": self.complemento,
         "cidade_id": self.cidade_id
     }
     return data
Ejemplo n.º 4
0
def login():
    data = request.get_json()

    email = data.get("email").lower()

    cpf_pis = fieldsFormatter.CpfFormatter().clean(email)

    user = db.session.query(Usuario).join(
        Perfil, Perfil.id == Usuario.perfil_id, isouter=True).filter(
            or_(Usuario.email == email, Perfil.cpf == cpf_pis,
                Perfil.pis == cpf_pis)).first()

    output = {"form": [], "error": False}

    if not user:
        output["form"].append({"message": Messages.AUTH_USER_NOT_FOUND})
        output["error"] = True
    elif not check_password_hash(user.senha, str(data.get("senha"))):
        output["form"].append({"message": Messages.AUTH_USER_PASS_ERROR})
        output["error"] = True

    if output["error"]:
        return jsonify(output)

    return (
        jsonify({
            "access_token": create_access_token(identity=user.id),
            "refresh_token": create_refresh_token(identity=user.id),
            "cargo_id": user.cargo_id,
            "email": user.email,
            "perfil_id": user.perfil_id,
            "perfil": {
                "id": user.perfil_id,
                "nome": user.perfil.nome,
                "cpf": user.perfil.cpf,
                "pis": user.perfil.pis
            } if user.perfil_id is not None else None,
            "cargo": {
                "id": user.cargo.id,
                "name": user.cargo.nome
            },
        }),
        200,
    )
Ejemplo n.º 5
0
def perfilAll():
    page = request.args.get("page", 1, type=int)
    rows_per_page = request.args.get("rows_per_page",
                                     app.config["ROWS_PER_PAGE"],
                                     type=int)
    cpf = request.args.get("cpf", None)

    query = Perfil.query

    if cpf != None:
        query = query.filter(
            Perfil.cpf.ilike("%%{}%%".format(
                fieldsFormatter.CpfFormatter().clean(cpf))))

    perfis, output = paginate(query, page, rows_per_page)

    for perfil in perfis:
        data = perfil.to_dict()
        output["itens"].append(data)

    return jsonify(output)
Ejemplo n.º 6
0
def me():
    current_user = get_jwt_identity()
    user = Usuario.query.get(current_user)
    if user is None:
        return jsonify({
            "message":
            Messages.REGISTER_NOT_FOUND.format(current_user),
            "error":
            True
        })

    return (
        jsonify({
            "error": False,
            "id": user.id,
            "email": user.email,
            "perfil_id": user.perfil_id,
            "perfil": {
                "id": user.perfil_id,
                "nome": user.perfil.nome,
                "cpf": fieldsFormatter.CpfFormatter().format(user.perfil.cpf),
                "pis": fieldsFormatter.PisFormatter().format(user.perfil.pis),
                "cep": fieldsFormatter.CepFormatter().format(user.perfil.cep),
                "rua": user.perfil.rua,
                "numero": user.perfil.numero,
                "complemento": user.perfil.complemento,
                "cidade_id": user.perfil.cidade_id,
            } if user.perfil_id is not None else None,
            "cargo_id": user.cargo_id,
            "cargo": {
                "id": user.cargo.id,
                "name": user.cargo.nome
            },
        }),
        200,
    )