refactor: melhorias na UI - formulário de pagamento e cards

This commit is contained in:
andersonid
2025-04-02 17:29:11 -03:00
parent f0faf4270b
commit ce3b5a4231
3 changed files with 218 additions and 91 deletions

55
app.py
View File

@@ -447,6 +447,7 @@ def listar_cotas():
@app.route("/pagamentos/novo", methods=["GET", "POST"])
@require_login
def novo_pagamento():
"""Rota para criar um novo pagamento"""
user = current_user
# Verificar se o usuário tem permissão para registrar pagamentos em alguma instância
@@ -458,24 +459,46 @@ def novo_pagamento():
return redirect(url_for('home'))
if request.method == "POST":
pagamentos = Pagamento(
militante_id=request.form["militante_id"],
tipo_pagamento_id=request.form["tipo_pagamento_id"],
valor=request.form["valor"],
data_pagamento=datetime.strptime(request.form["data_pagamento"], "%Y-%m-%d")
)
db_session.add(pagamentos)
try:
db_session.commit()
return redirect(url_for("listar_pagamentos"))
except Exception as e:
print(e)
db_session.rollback()
flash('Erro ao cadastrar pagamento. Verifique se os dados fornecidos são válidos.', 'error')
return render_template("novo_pagamento.html")
militante_id = request.form.get("militante_id")
tipo_pagamento_id = request.form.get("tipo_pagamento_id")
valor = request.form.get("valor")
data_pagamento = request.form.get("data_pagamento")
return render_template("novo_pagamento.html")
# Validações
if not all([militante_id, tipo_pagamento_id, valor, data_pagamento]):
flash("Todos os campos são obrigatórios.", "danger")
return redirect(url_for("novo_pagamento"))
# Criar novo pagamento
pagamento = Pagamento(
militante_id=militante_id,
tipo_pagamento_id=tipo_pagamento_id,
valor=float(valor),
data_pagamento=datetime.strptime(data_pagamento, "%Y-%m-%d")
)
db_session.add(pagamento)
db_session.commit()
flash("Pagamento registrado com sucesso!", "success")
return redirect(url_for("listar_pagamentos"))
except Exception as e:
db_session.rollback()
app.logger.error(f"Erro ao registrar pagamento: {str(e)}")
flash("Erro ao registrar pagamento. Por favor, tente novamente.", "danger")
return redirect(url_for("novo_pagamento"))
# GET - Renderizar formulário
militantes = db_session.query(Militante).order_by(Militante.nome).all()
tipos_pagamento = db_session.query(TipoPagamento).order_by(TipoPagamento.descricao).all()
hoje = datetime.now().strftime("%Y-%m-%d")
return render_template("novo_pagamento.html",
militantes=militantes,
tipos_pagamento=tipos_pagamento,
hoje=hoje)
# Rota para listar pagamentos
@app.route("/pagamentos")