Persano commited on
Commit
f01f154
·
verified ·
1 Parent(s): 36a39f1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, render_template, request, redirect, url_for
2
+ from supabase import create_client, Client
3
+ from datetime import datetime
4
+ import os
5
+
6
+ app = Flask(__name__)
7
+
8
+ # Configuração Supabase
9
+ SUPABASE_URL = os.getenv("SUPABASE_URL")
10
+ SUPABASE_KEY = os.getenv("SUPABASE_KEY")
11
+ supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
12
+
13
+ # --- Rota: Listagem de orçamentos ---
14
+ @app.route("/")
15
+ def index():
16
+ response = supabase.table("orcamentos").select("*").order("id", desc=True).execute()
17
+ orcamentos = response.data
18
+ return render_template("index.html", orcamentos=orcamentos)
19
+
20
+ # --- Rota: Novo Orçamento ---
21
+ @app.route("/novo", methods=["GET", "POST"])
22
+ def novo():
23
+ if request.method == "POST":
24
+ dados = {
25
+ "cliente": request.form["cliente"],
26
+ "endereco": request.form["endereco"],
27
+ "area_total": request.form["area_total"],
28
+ "quartos": request.form["quartos"],
29
+ "banheiros": request.form["banheiros"],
30
+ "total": calcular_total(request.form), # Função que calcula o total
31
+ "data_criacao": datetime.now().isoformat()
32
+ }
33
+ supabase.table("orcamentos").insert(dados).execute()
34
+ return redirect(url_for('index'))
35
+ return render_template("novo.html")
36
+
37
+ # --- Rota: Detalhe ---
38
+ @app.route("/orcamento/<int:id>")
39
+ def orcamento(id):
40
+ response = supabase.table("orcamentos").select("*").eq("id", id).single().execute()
41
+ orcamento = response.data
42
+ return render_template("relatorio.html", orcamento=orcamento)
43
+
44
+ # --- Rota: Excluir ---
45
+ @app.route("/delete/<int:id>")
46
+ def delete(id):
47
+ supabase.table("orcamentos").delete().eq("id", id).execute()
48
+ return redirect(url_for('index'))
49
+
50
+ # --- Função de cálculo (exemplo simplificado) ---
51
+ def calcular_total(form):
52
+ area = float(form.get("area_total", 0))
53
+ quartos = int(form.get("quartos", 0))
54
+ banheiros = int(form.get("banheiros", 0))
55
+ base_m2 = 500
56
+ return area * base_m2 + quartos * 3000 + banheiros * 4000
57
+
58
+ if __name__ == "__main__":
59
+ app.run(host="0.0.0.0", port=7860)