Spaces:
No application file
No application file
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)))
|