fix: corrige problemas de permissões e rotas
This commit is contained in:
78
app.py
78
app.py
@@ -60,6 +60,12 @@ login_manager = LoginManager()
|
||||
login_manager.init_app(app)
|
||||
login_manager.login_view = 'login'
|
||||
|
||||
# Adicionar filtros Jinja2
|
||||
@app.template_filter('bitwise_and')
|
||||
def bitwise_and(value1, value2):
|
||||
"""Filtro para operação bit a bit AND"""
|
||||
return value1 & value2
|
||||
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
"""Carrega o usuário pelo ID"""
|
||||
@@ -381,20 +387,12 @@ def criar_militante():
|
||||
# Rota para listar militantes
|
||||
@app.route("/militantes")
|
||||
@require_login
|
||||
@require_permission(Permission.VIEW_CELL_DATA)
|
||||
@require_permission(Permission.MANAGE_CELL_MEMBERS)
|
||||
def listar_militantes():
|
||||
db = get_db_connection()
|
||||
try:
|
||||
print("Buscando militantes...")
|
||||
db = get_db_connection()
|
||||
militantes = db.query(Militante).order_by(Militante.nome).all()
|
||||
print(f"Total de militantes encontrados: {len(militantes)}")
|
||||
for militante in militantes:
|
||||
print(f"Militante: {militante.nome} (ID: {militante.id})")
|
||||
return render_template("listar_militantes.html", militantes=militantes)
|
||||
except Exception as e:
|
||||
print(f"Erro ao listar militantes: {e}")
|
||||
flash('Erro ao listar militantes', 'danger')
|
||||
return render_template("listar_militantes.html", militantes=[])
|
||||
militantes = db.query(Militante).all()
|
||||
return render_template('listar_militantes.html', militantes=militantes)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
@@ -424,7 +422,7 @@ def excluir_militante(id):
|
||||
# Rota para criar uma nova cota
|
||||
@app.route("/cotas/novo", methods=["GET", "POST"])
|
||||
@require_login
|
||||
@require_permission(Permission.VIEW_CELL_REPORTS)
|
||||
@require_permission(Permission.MANAGE_CELL_REPORTS)
|
||||
def nova_cota():
|
||||
if request.method == "POST":
|
||||
militante_id = request.form.get("militante_id")
|
||||
@@ -479,19 +477,16 @@ def nova_cota():
|
||||
# Rota para listar cotas
|
||||
@app.route("/cotas")
|
||||
@require_login
|
||||
@require_permission(Permission.VIEW_CELL_REPORTS)
|
||||
@require_permission(Permission.MANAGE_CELL_REPORTS)
|
||||
def listar_cotas():
|
||||
try:
|
||||
print("Buscando cotas...")
|
||||
# Buscar cotas com informações do militante
|
||||
db = get_db_connection()
|
||||
cotas = db.query(CotaMensal)\
|
||||
.join(Militante)\
|
||||
.order_by(CotaMensal.data_vencimento.desc())\
|
||||
.all()
|
||||
|
||||
print(f"Total de cotas encontradas: {len(cotas)}")
|
||||
|
||||
# Calcular status de cada cota
|
||||
for cota in cotas:
|
||||
if cota.pago:
|
||||
@@ -500,7 +495,6 @@ def listar_cotas():
|
||||
cota.status = "atrasada"
|
||||
else:
|
||||
cota.status = "pendente"
|
||||
print(f"Cota {cota.id}: Militante={cota.militante.nome}, Valor={cota.valor_novo}, Status={cota.status}")
|
||||
|
||||
# Buscar militantes para o modal de nova cota
|
||||
militantes = db.query(Militante).order_by(Militante.nome).all()
|
||||
@@ -622,18 +616,60 @@ def novo_pagamento():
|
||||
# Rota para listar pagamentos
|
||||
@app.route("/pagamentos")
|
||||
@require_login
|
||||
@require_permission(Permission.MANAGE_CELL_REPORTS)
|
||||
def listar_pagamentos():
|
||||
try:
|
||||
print("Buscando pagamentos...")
|
||||
db = get_db_connection()
|
||||
pagamentos = db.query(Pagamento).order_by(Pagamento.data_pagamento.desc()).all()
|
||||
return render_template("listar_pagamentos.html", pagamentos=pagamentos)
|
||||
pagamentos = db.query(Pagamento)\
|
||||
.join(Militante)\
|
||||
.order_by(Pagamento.data_pagamento.desc())\
|
||||
.all()
|
||||
|
||||
militantes = db.query(Militante).order_by(Militante.nome).all()
|
||||
tipos_pagamento = db.query(TipoPagamento).all()
|
||||
|
||||
return render_template("listar_pagamentos.html",
|
||||
pagamentos=pagamentos,
|
||||
militantes=militantes,
|
||||
tipos_pagamento=tipos_pagamento)
|
||||
except Exception as e:
|
||||
print(f"Erro ao listar pagamentos: {e}")
|
||||
flash('Erro ao listar pagamentos', 'danger')
|
||||
return render_template("listar_pagamentos.html", pagamentos=[])
|
||||
return render_template("listar_pagamentos.html", pagamentos=[], militantes=[])
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
# Rota para adicionar pagamento
|
||||
@app.route("/pagamentos/adicionar", methods=["POST"])
|
||||
@require_login
|
||||
@require_permission(Permission.MANAGE_CELL_REPORTS)
|
||||
def adicionar_pagamento():
|
||||
if request.method == "POST":
|
||||
try:
|
||||
militante_id = request.form.get("militante_id")
|
||||
tipo_pagamento = request.form.get("tipo_pagamento")
|
||||
valor = float(request.form.get("valor"))
|
||||
data_pagamento = datetime.strptime(request.form.get("data_pagamento"), "%Y-%m-%d").date()
|
||||
|
||||
db = get_db_connection()
|
||||
pagamento = Pagamento(
|
||||
militante_id=militante_id,
|
||||
tipo_pagamento=tipo_pagamento,
|
||||
valor=valor,
|
||||
data_pagamento=data_pagamento
|
||||
)
|
||||
db.add(pagamento)
|
||||
db.commit()
|
||||
flash('Pagamento adicionado com sucesso!', 'success')
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
flash(f'Erro ao adicionar pagamento: {str(e)}', 'danger')
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
return redirect(url_for('listar_pagamentos'))
|
||||
|
||||
# Rota para criar um novo material vendido
|
||||
@app.route("/materiais/novo", methods=["GET", "POST"])
|
||||
@require_login
|
||||
|
||||
Reference in New Issue
Block a user