from flask import Blueprint, render_template, redirect, url_for, request, jsonify from flask_login import login_required from controllers.militante_controller import MilitanteController from services.celula_service import CelulaService from functions.decorators import require_permission, require_role militante_bp = Blueprint('militante', __name__, url_prefix='/militantes') @militante_bp.route("/") @login_required @require_permission('gerenciar_militantes') def listar(): """Lista todos os militantes""" militantes = MilitanteController.listar_militantes() celulas = CelulaService.listar_celulas() return render_template('listar_militantes.html', militantes=militantes, celulas=celulas, Militante=None) # Militante class for constants @militante_bp.route("/criar", methods=["POST"]) @login_required @require_permission('gerenciar_militantes') def criar(): """Cria um novo militante""" return MilitanteController.criar_militante(request.form) @militante_bp.route("/editar/", methods=["POST"]) @login_required @require_permission('gerenciar_militantes') def editar(militante_id): """Edita um militante existente""" return MilitanteController.atualizar_militante(militante_id, request.form) @militante_bp.route("/excluir/", methods=["POST"]) @login_required @require_permission('gerenciar_militantes') def excluir(militante_id): """Exclui um militante""" if MilitanteController.excluir_militante(militante_id): return redirect(url_for('militante.listar')) return redirect(url_for('militante.listar')) @militante_bp.route("/dados/") @login_required @require_permission('gerenciar_militantes') def dados(militante_id): """Busca os dados de um militante especĂ­fico""" return MilitanteController.buscar_dados_militante(militante_id)