from flask import Flask, render_template, request, redirect, url_for from supabase import create_client, Client from datetime import datetime import os app = Flask(__name__) # Configuração Supabase SUPABASE_URL = os.getenv("SUPABASE_URL") SUPABASE_KEY = os.getenv("SUPABASE_KEY") supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY) # --- Rota: Listagem de orçamentos --- @app.route("/") def index(): response = supabase.table("orcamentos").select("*").order("id", desc=True).execute() orcamentos = response.data return render_template("index.html", orcamentos=orcamentos) # --- Rota: Novo Orçamento --- @app.route("/novo", methods=["GET", "POST"]) def novo(): if request.method == "POST": dados = { "cliente": request.form["cliente"], "endereco": request.form["endereco"], "area_total": request.form["area_total"], "quartos": request.form["quartos"], "banheiros": request.form["banheiros"], "total": calcular_total(request.form), # Função que calcula o total "data_criacao": datetime.now().isoformat() } supabase.table("orcamentos").insert(dados).execute() return redirect(url_for('index')) return render_template("novo.html") # --- Rota: Detalhe --- @app.route("/orcamento/") def orcamento(id): response = supabase.table("orcamentos").select("*").eq("id", id).single().execute() orcamento = response.data return render_template("relatorio.html", orcamento=orcamento) # --- Rota: Excluir --- @app.route("/delete/") def delete(id): supabase.table("orcamentos").delete().eq("id", id).execute() return redirect(url_for('index')) # --- Função de cálculo (exemplo simplificado) --- def calcular_total(form): area = float(form.get("area_total", 0)) quartos = int(form.get("quartos", 0)) banheiros = int(form.get("banheiros", 0)) base_m2 = 500 return area * base_m2 + quartos * 3000 + banheiros * 4000 if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)