File size: 3,184 Bytes
37c820c
fe9f921
f01f154
 
 
37c820c
f01f154
37c820c
 
 
 
 
 
 
 
 
 
 
 
 
f01f154
37c820c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f01f154
37c820c
f01f154
37c820c
 
 
 
 
 
 
 
 
 
f01f154
37c820c
 
 
fe9f921
37c820c
 
 
 
 
 
 
 
 
fe9f921
37c820c
 
 
 
fe9f921
37c820c
 
 
 
 
 
fe9f921
37c820c
 
 
 
 
 
f01f154
37c820c
 
f01f154
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from flask import Flask, render_template, request, redirect, session, url_for
from supabase_client import supabase
import os

app = Flask(__name__)
app.secret_key = os.urandom(24)

# -------- Autenticação --------
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']
        result = supabase.auth.sign_in_with_password({'email': email, 'password': password})
        if result.user:
            session['user'] = result.user.id
            return redirect('/dashboard')
        else:
            return "Login inválido"
    return render_template('login.html')

@app.route('/logout')
def logout():
    session.clear()
    return redirect('/login')

def login_required(f):
    def wrap(*args, **kwargs):
        if 'user' in session:
            return f(*args, **kwargs)
        else:
            return redirect('/login')
    wrap.__name__ = f.__name__
    return wrap

# -------- Dashboard --------
@app.route('/dashboard')
@login_required
def dashboard():
    user_id = session['user']
    response = supabase.table('orcamentos').select('*').eq('user_id', user_id).execute()
    orcamentos = response.data
    return render_template('dashboard.html', orcamentos=orcamentos)

# -------- Criar Orçamento --------
@app.route('/orcamentos/novo', methods=['GET', 'POST'])
@login_required
def criar_orcamento():
    if request.method == 'POST':
        dados = {
            'user_id': session['user'],
            'cliente': request.form['cliente'],
            'endereco': request.form['endereco'],
            'valor_total': request.form['valor_total']
        }
        supabase.table('orcamentos').insert(dados).execute()
        return redirect('/dashboard')
    return render_template('create_orcamento.html')

# -------- Editar Orçamento --------
@app.route('/orcamentos/<int:orcamento_id>/editar', methods=['GET', 'POST'])
@login_required
def editar_orcamento(orcamento_id):
    if request.method == 'POST':
        update_data = {
            'cliente': request.form['cliente'],
            'endereco': request.form['endereco'],
            'valor_total': request.form['valor_total']
        }
        supabase.table('orcamentos').update(update_data).eq('id', orcamento_id).execute()
        return redirect('/dashboard')
    orcamento = supabase.table('orcamentos').select('*').eq('id', orcamento_id).single().execute().data
    return render_template('edit_orcamento.html', orcamento=orcamento)

# -------- Ver Orçamento --------
@app.route('/orcamentos/<int:orcamento_id>')
@login_required
def visualizar_orcamento(orcamento_id):
    orcamento = supabase.table('orcamentos').select('*').eq('id', orcamento_id).single().execute().data
    return render_template('view_orcamento.html', orcamento=orcamento)

# -------- Excluir Orçamento --------
@app.route('/orcamentos/<int:orcamento_id>/excluir', methods=['POST'])
@login_required
def excluir_orcamento(orcamento_id):
    supabase.table('orcamentos').delete().eq('id', orcamento_id).execute()
    return redirect('/dashboard')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=7860)