refomap_adm / app.py
Persano's picture
Update app.py
fe9f921 verified
raw
history blame
2.94 kB
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)))