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//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/') @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//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)