File size: 2,943 Bytes
fe9f921
 
f01f154
fe9f921
f01f154
fe9f921
f01f154
 
 
fe9f921
f01f154
 
fe9f921
 
f01f154
fe9f921
f01f154
 
fe9f921
f01f154
fe9f921
f01f154
 
fe9f921
 
 
 
 
 
 
f01f154
fe9f921
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f01f154
fe9f921
 
 
 
 
 
f01f154
fe9f921
 
 
 
 
 
f01f154
 
fe9f921
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from flask import Flask, render_template, request, redirect, url_for, send_file
from supabase_client import supabase
from datetime import datetime
import pdfkit
import os
from io import BytesIO

app = Flask(__name__)

pdfkit_config = pdfkit.configuration(wkhtmltopdf="/usr/bin/wkhtmltopdf")

@app.route("/")
def listar_orcamentos():
    response = supabase.table("orcamentos").select("*").execute()
    orcamentos = response.data
    return render_template("list.html", orcamentos=orcamentos)

@app.route("/novo", methods=["GET", "POST"])
def novo_orcamento():
    if request.method == "POST":
        data = {
            "cliente": request.form["cliente"],
            "endereco": request.form["endereco"],
            "area_total": float(request.form["area_total"]),
            "quartos": int(request.form["quartos"]),
            "banheiros": int(request.form["banheiros"]),
            "inicio": request.form["inicio"],
            "detalhes": request.form["detalhes"],
            "total": float(request.form["total"]),
            "criado_em": datetime.now().isoformat()
        }
        supabase.table("orcamentos").insert(data).execute()
        return redirect(url_for("listar_orcamentos"))
    return render_template("form.html", orcamento=None)

@app.route("/editar/<int:id>", methods=["GET", "POST"])
def editar_orcamento(id):
    orcamento = supabase.table("orcamentos").select("*").eq("id", id).single().execute().data
    if request.method == "POST":
        data = {
            "cliente": request.form["cliente"],
            "endereco": request.form["endereco"],
            "area_total": float(request.form["area_total"]),
            "quartos": int(request.form["quartos"]),
            "banheiros": int(request.form["banheiros"]),
            "inicio": request.form["inicio"],
            "detalhes": request.form["detalhes"],
            "total": float(request.form["total"])
        }
        supabase.table("orcamentos").update(data).eq("id", id).execute()
        return redirect(url_for("listar_orcamentos"))
    return render_template("form.html", orcamento=orcamento)

@app.route("/excluir/<int:id>")
def excluir_orcamento(id):
    supabase.table("orcamentos").delete().eq("id", id).execute()
    return redirect(url_for("listar_orcamentos"))

@app.route("/visualizar/<int:id>")
def visualizar_orcamento(id):
    orcamento = supabase.table("orcamentos").select("*").eq("id", id).single().execute().data
    return render_template("relatorio.html", o=orcamento)

@app.route("/pdf/<int:id>")
def gerar_pdf(id):
    o = supabase.table("orcamentos").select("*").eq("id", id).single().execute().data
    html = render_template("contrato.html", o=o)
    pdf = pdfkit.from_string(html, False, configuration=pdfkit_config)
    return send_file(BytesIO(pdf), as_attachment=True, download_name=f"Contrato_{o['cliente']}.pdf")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 7860)))