Spaces:
No application file
No application file
| 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") | |
| def listar_orcamentos(): | |
| response = supabase.table("orcamentos").select("*").execute() | |
| orcamentos = response.data | |
| return render_template("list.html", orcamentos=orcamentos) | |
| 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) | |
| 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) | |
| def excluir_orcamento(id): | |
| supabase.table("orcamentos").delete().eq("id", id).execute() | |
| return redirect(url_for("listar_orcamentos")) | |
| def visualizar_orcamento(id): | |
| orcamento = supabase.table("orcamentos").select("*").eq("id", id).single().execute().data | |
| return render_template("relatorio.html", o=orcamento) | |
| 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))) | |