Browse Source

Refatora funcionalidades de inserção e remoção

pull/1022/head
Eduardo Calil 9 years ago
parent
commit
775c38749b
  1. 17
      sapl/parlamentares/urls.py
  2. 233
      sapl/parlamentares/views.py
  3. 17
      sapl/static/js/app.js
  4. 283
      sapl/templates/parlamentares/composicaomesa_form.html

17
sapl/parlamentares/urls.py

@ -1,15 +1,18 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from sapl.parlamentares.views import (altera_legislatura_mesa, from sapl.parlamentares.views import (altera_field_mesa,
CargoMesaCrud, ColigacaoCrud, CargoMesaCrud, ColigacaoCrud,
ComposicaoColigacaoCrud, DependenteCrud, ComposicaoColigacaoCrud, DependenteCrud,
FiliacaoCrud, FrenteCrud, FrenteList, FiliacaoCrud, FrenteCrud, FrenteList,
LegislaturaCrud, MandatoCrud, LegislaturaCrud,
insere_parlamentar_composicao,
MandatoCrud,
MesaDiretoraView, NivelInstrucaoCrud, MesaDiretoraView, NivelInstrucaoCrud,
ParlamentarCrud, ParlamentarCrud,
ParticipacaoParlamentarCrud, PartidoCrud, ParticipacaoParlamentarCrud, PartidoCrud,
ProposicaoParlamentarCrud, ProposicaoParlamentarCrud,
RelatoriaParlamentarCrud, RelatoriaParlamentarCrud,
remove_parlamentar_composicao,
SessaoLegislativaCrud, SessaoLegislativaCrud,
TipoAfastamentoCrud, TipoDependenteCrud, TipoAfastamentoCrud, TipoDependenteCrud,
TipoMilitarCrud, VotanteView) TipoMilitarCrud, VotanteView)
@ -53,6 +56,12 @@ urlpatterns = [
url(r'^mesa-diretora/$', url(r'^mesa-diretora/$',
MesaDiretoraView.as_view(), name='mesa_diretora'), MesaDiretoraView.as_view(), name='mesa_diretora'),
url(r'^mesa-diretora/altera-legislatura/$', url(r'^mesa-diretora/altera-field-mesa/$',
altera_legislatura_mesa, name='altera_legislatura_mesa'), altera_field_mesa, name='altera_field_mesa'),
url(r'^mesa-diretora/insere-parlamentar-composicao/$',
insere_parlamentar_composicao, name='insere_parlamentar_composicao'),
url(r'^mesa-diretora/remove-parlamentar-composicao/$',
remove_parlamentar_composicao, name='remove_parlamentar_composicao'),
] ]

233
sapl/parlamentares/views.py

@ -396,6 +396,11 @@ class MesaDiretoraView(FormView):
[p.parlamentar for p in parlamentares]) - set( [p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados)) parlamentares_ocupados))
# Se todos os cargos estiverem ocupados, a listagem de parlamentares
# deve ser renderizada vazia
if not cargos_vagos:
parlamentares_vagos = []
return self.render_to_response( return self.render_to_response(
{'legislaturas': Legislatura.objects.all( {'legislaturas': Legislatura.objects.all(
).order_by('-numero'), ).order_by('-numero'),
@ -409,125 +414,53 @@ class MesaDiretoraView(FormView):
'cargos_vagos': cargos_vagos 'cargos_vagos': cargos_vagos
}) })
def existe_membro_mesa(self, sessao_plenaria, cargo):
return ComposicaoMesa.objects.filter(
sessao_legislativa_id=sessao_plenaria.id,
# parlamentar_id = integrante.parlamentar_id,
cargo_id=cargo.id
).exists()
def post(self, request, *args, **kwargs):
if (not Legislatura.objects.exists() or
not SessaoLegislativa.objects.exists()):
return self.validation(request)
if 'Incluir' in request.POST and request.user.has_perm(
'%s.add_%s' % (
AppConfig.label, ComposicaoMesa._meta.model_name)):
composicao = ComposicaoMesa()
try:
composicao.sessao_legislativa = SessaoLegislativa.objects.get(
id=int(request.POST['sessao']))
except MultiValueDictKeyError:
messages.error(request, _(
'Nenhuma sessão foi inserida!'))
return self.get(request)
try:
composicao.parlamentar = Parlamentar.objects.get(
id=int(request.POST['parlamentar']))
except MultiValueDictKeyError:
messages.error(request, _(
'Nenhum parlamentar foi inserido!'))
return self.get(request)
try:
composicao.cargo = CargoMesa.objects.get(
id=int(request.POST['cargo']))
if self.existe_membro_mesa(composicao.sessao_legislativa,
composicao.cargo):
messages.error(request, _('Parlamentar já inserido!'))
return self.get(request)
composicao.save()
except MultiValueDictKeyError:
messages.error(request, _(
'Nenhum cargo foi inserido!'))
return self.get(request)
messages.success(request, _(
'Parlamentar adicionado com sucesso!'))
elif 'Excluir' in request.POST and request.user.has_perm(
'%s.delete_%s' % (
AppConfig.label, ComposicaoMesa._meta.model_name)):
if 'composicao_mesa' in request.POST:
ids = request.POST['composicao_mesa'].split(':')
composicao = ComposicaoMesa.objects.get(
sessao_legislativa_id=int(request.POST['sessao']),
parlamentar_id=int(ids[0]),
cargo_id=int(ids[1])
)
composicao.delete()
messages.success(request, _(
'Parlamentar excluido com sucesso!'))
else:
messages.error(request, _(
'Selecione um parlamentar para ser excluido!'))
mesa = ComposicaoMesa.objects.filter(
sessao_legislativa=request.POST['sessao'])
cargos_ocupados = [m.cargo for m in mesa]
cargos = CargoMesa.objects.all()
cargos_vagos = list(set(cargos) - set(cargos_ocupados))
parlamentares = Legislatura.objects.get(
id=int(request.POST['legislatura'])).mandato_set.all()
parlamentares_ocupados = [m.parlamentar for m in mesa]
parlamentares_vagos = list(
set(
[p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados))
sessao_sel = SessaoLegislativa.objects.get(
id=int(request.POST['sessao']))
if str(sessao_sel.legislatura_id) != request.POST['legislatura']: def altera_field_mesa(request):
sessao_sel = SessaoLegislativa.objects.filter( """
legislatura=Legislatura.objects.first()).first() Essa função lida com qualquer alteração nos campos
da Mesa Diretora, atualizando os campos após cada
alteração
"""
return self.render_to_response( # Verifica qual o campo que foi alterado
{'legislaturas': Legislatura.objects.all( if request.GET['id_field'] == '#id_legislatura':
).order_by('-numero'), legislatura_id = request.GET['field']
'legislatura_selecionada': Legislatura.objects.get( sessao = SessaoLegislativa.objects.filter(
id=int(request.POST['legislatura'])), legislatura=request.GET['field']).order_by('-data_inicio')
'sessoes': SessaoLegislativa.objects.filter( try:
legislatura_id=int(request.POST['legislatura'])), sessao_selecionada = sessao[0]
'sessao_selecionada': sessao_sel, # Passa, pois essa exceção será capturada no 'if not sessao'
'composicao_mesa': mesa, except IndexError:
'parlamentares': parlamentares_vagos, pass
'cargos_vagos': cargos_vagos
}) elif request.GET['id_field'] == '#id_sessao_legislativa':
sessao_selecionada = SessaoLegislativa.objects.get(
id=request.GET['field'])
legislatura_id = sessao_selecionada.legislatura.id
sessao = SessaoLegislativa.objects.filter(
legislatura=legislatura_id).order_by('-data_inicio')
# Caso seja uma operação de incluir/remover, garante que a
# sessão se manterá a mesma
if request.GET['incluir_excluir_op']:
try:
sessao_selecionada = SessaoLegislativa.objects.get(
id=request.GET['incluir_excluir_op'])
except ObjectDoesNotExist:
return JsonResponse({'msg': ('Essa sessão não existe!', 0)})
def altera_legislatura_mesa(request): if not sessao:
sessao = SessaoLegislativa.objects.filter( return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)})
legislatura=request.GET['legislatura']).order_by('-data_inicio')
composicao_mesa = ComposicaoMesa.objects.filter( composicao_mesa = ComposicaoMesa.objects.filter(
sessao_legislativa=sessao[0]) sessao_legislativa=sessao_selecionada)
cargos_ocupados = [m.cargo for m in composicao_mesa] cargos_ocupados = [m.cargo for m in composicao_mesa]
cargos = CargoMesa.objects.all() cargos = CargoMesa.objects.all()
cargos_vagos = list(set(cargos) - set(cargos_ocupados)) cargos_vagos = list(set(cargos) - set(cargos_ocupados))
parlamentares = Legislatura.objects.get( parlamentares = Legislatura.objects.get(
id=request.GET['legislatura']).mandato_set.all() id=legislatura_id).mandato_set.all()
parlamentares_ocupados = [m.parlamentar for m in composicao_mesa] parlamentares_ocupados = [m.parlamentar for m in composicao_mesa]
parlamentares_vagos = list( parlamentares_vagos = list(
set( set(
@ -535,12 +468,92 @@ def altera_legislatura_mesa(request):
parlamentares_ocupados)) parlamentares_ocupados))
lista_sessoes = [(s.id, s.__str__()) for s in sessao] lista_sessoes = [(s.id, s.__str__()) for s in sessao]
lista_composicao = [(c.id, c.__str__()) for c in composicao_mesa] lista_composicao = [(c.id, c.parlamentar.__str__(),
lista_parlamentares = [(p.id, p.__str__()) for p in parlamentares_vagos] c.cargo.__str__()) for c in composicao_mesa]
lista_parlamentares = [(
p.id, p.__str__()) for p in parlamentares_vagos]
lista_cargos = [(c.id, c.__str__()) for c in cargos_vagos] lista_cargos = [(c.id, c.__str__()) for c in cargos_vagos]
return JsonResponse( return JsonResponse(
{'lista_sessoes': lista_sessoes, {'lista_sessoes': lista_sessoes,
'lista_composicao': lista_composicao, 'lista_composicao': lista_composicao,
'lista_parlamentares': lista_parlamentares, 'lista_parlamentares': lista_parlamentares,
'lista_cargos': lista_cargos}) 'lista_cargos': lista_cargos,
'sessao_selecionada': sessao_selecionada.id})
def insere_parlamentar_composicao(request):
"""
Essa função lida com qualquer operação de inserção
na composição da Mesa Diretora
"""
if request.user.has_perm(
'%s.add_%s' % (
AppConfig.label, ComposicaoMesa._meta.model_name)):
composicao = ComposicaoMesa()
try:
composicao.sessao_legislativa = SessaoLegislativa.objects.get(
id=int(request.POST['sessao']))
except MultiValueDictKeyError:
return JsonResponse({'msg': ('Nenhuma sessão foi inserida!', 0)})
try:
composicao.parlamentar = Parlamentar.objects.get(
id=int(request.POST['parlamentar']))
except MultiValueDictKeyError:
return JsonResponse({
'msg': ('Nenhum parlamentar foi inserido!', 0)})
try:
composicao.cargo = CargoMesa.objects.get(
id=int(request.POST['cargo']))
parlamentar_ja_inserido = ComposicaoMesa.objects.filter(
sessao_legislativa_id=composicao.sessao_legislativa.id,
cargo_id=composicao.cargo.id).exists()
if parlamentar_ja_inserido:
return JsonResponse({'msg': ('Parlamentar já inserido!', 0)})
composicao.save()
except MultiValueDictKeyError:
return JsonResponse({'msg': ('Nenhum cargo foi inserido!', 0)})
return JsonResponse({'msg': ('Parlamentar inserido com sucesso!', 1)})
else:
return JsonResponse(
{'msg': ('Você não tem permissão para esta operação!', 0)})
def remove_parlamentar_composicao(request):
"""
Essa função lida com qualquer operação de remoção
na composição da Mesa Diretora
"""
if request.POST and request.user.has_perm(
'%s.delete_%s' % (
AppConfig.label, ComposicaoMesa._meta.model_name)):
if 'composicao_mesa' in request.POST:
try:
composicao = ComposicaoMesa.objects.get(
id=request.POST['composicao_mesa'])
except ObjectDoesNotExist:
return JsonResponse(
{'msg': (
'Composição da Mesa não pôde ser removida!', 0)})
composicao.delete()
return JsonResponse(
{'msg': (
'Parlamentar excluido com sucesso!', 1)})
else:
return JsonResponse(
{'msg': (
'Selecione algum parlamentar para ser excluido!', 0)})

17
sapl/static/js/app.js

@ -217,3 +217,20 @@ $(document).ready(function(){
OptionalCustomFrontEnd(); OptionalCustomFrontEnd();
}); });
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}

283
sapl/templates/parlamentares/composicaomesa_form.html

@ -8,83 +8,77 @@
<b>{{legislatura_selecionada}}</b> não possui nenhuma Sessão Legislativa cadastrada.<br /> <b>{{legislatura_selecionada}}</b> não possui nenhuma Sessão Legislativa cadastrada.<br />
Clique <a href="{% url 'sapl.parlamentares:sessaolegislativa_create' %}">aqui</a> para cadastrar uma nova. Clique <a href="{% url 'sapl.parlamentares:sessaolegislativa_create' %}">aqui</a> para cadastrar uma nova.
</div> </div>
{% else %} {% else %}
<form method="POST"> <fieldset class="form-group">
{% csrf_token %} <legend>Escolha da Legislatura e da Sessão Legislativa</legend>
<fieldset class="form-group"> <div class="row">
<legend>Escolha da Legislatura e da Sessão Legislativa</legend> <div class="col-md-6">
<div class="row"> <label>Escolha uma Legislatura</label>
<div class="col-md-6"> <select name="legislatura" id="id_legislatura" class="form-control">
<label>Escolha uma Legislatura</label> {% for l in legislaturas %}
<select name="legislatura" id="id_legislatura" class="form-control"> <option value="{{l.id}}" {% if l == legislatura_selecionada %} selected {% endif %}>
{% for l in legislaturas %} {{l}}
<option value="{{l.id}}" {% if l == legislatura_selecionada %} selected {% endif %}> </option>
{{l}} {% endfor %}
</option> </select>
{% endfor %} </div>
</select> <div class="col-md-6">
</div> <label>Escolha uma Sessão Legislativa</label>
<div class="col-md-6"> <select name="sessao" id="id_sessao_legislativa" class="form-control">
<label>Escolha uma Sessão Legislativa</label> {% for s in sessoes %}
<select name="sessao" id="id_sessao_legislativa" class="form-control" onChange="form.submit();"> <option value="{{s.id}}" {% if s == sessao_selecionada %} selected {% endif %}>
{% for s in sessoes %} {{s}}
<option value="{{s.id}}" {% if s == sessao_selecionada %} selected {% endif %}> </option>
{{s}} {% endfor %}
</option> </select>
{% endfor %} </div>
</select> </div>
</div> </fieldset>
</div> <br />
</fieldset> <fieldset class="form-group">
<br /> <legend>Escolha da Composição da Mesa Diretora</legend>
<fieldset class="form-group"> <div class="row">
<legend>Escolha da Composição da Mesa Diretora</legend> <div class="col-md-4">
<div class="row"> <label>Composição da Mesa Diretora</label>
<div class="col-md-4"> <select multiple size="5" class="form-control" id="id_composicao_mesa" name="composicao_mesa">
<label>Composição da Mesa Diretora</label> {% for p in composicao_mesa %}
<select multiple size="5" class="form-control" id="id_composicao_mesa" name="composicao_mesa"> <option value="{{p.id}}">
{% for p in composicao_mesa %} {{p.parlamentar}} || {{p.cargo}}
<option value="{{p.parlamentar.id}}:{{p.cargo.id}}"> </option>
{{p.parlamentar}} || {{p.cargo}} {% endfor %}
</option> </select>
{% endfor %} </div>
</select>
</div> <div class="col-md-4" align="center">
<br /><br />
<div class="col-md-4" align="center"> {% if perms.parlamentares.add_cargomesa %}
<br /><br /> <input type="submit" style="display: none" name="Incluir" id="id_incluir" Value="Incluir" class="btn btn-primary" />
{% if cargos_vagos %} {% endif %}
{% if perms.parlamentares.add_cargomesa %} <br />
<input type="submit" name="Incluir" Value="Incluir" class="btn btn-primary" /> <br />
{% endif %} {% if perms.parlamentares.add_composicaomesa %}
{% endif %} <input type="submit" style="display: none" name="Excluir" id="id_excluir" Value="Excluir" class="btn btn-danger" />
<br /> {% endif %}
<br /> </div>
{% if perms.parlamentares.add_composicaomesa %}
<input type="submit" name="Excluir" Value="Excluir" class="btn btn-danger" /> <div class="col-md-4">
{% endif %} <label id='parlamentar-cargo-title' style="display: none">Parlamentar | Cargo</label>
</div> <select class="form-control" name="parlamentar" id="id_parlamentar" style="display: none">
{% for p in parlamentares %}
{% if cargos_vagos %} <option value="{{p.id}}">{{p.nome_completo}}</option>
<div class="col-md-4"> {% endfor %}
<label id='parlamentar-cargo-title'>Parlamentar | Cargo</label> </select>
<select class="form-control" name="parlamentar" id="id_parlamentar"> <br />
{% for p in parlamentares %} <select class="form-control" name="cargo" id="id_cargo" style="display: none">
<option value="{{p.id}}">{{p.nome_completo}}</option> {% for c in cargos_vagos %}
{% endfor %} <option value="{{c.id}}">{{c}}</option>
</select> {% endfor %}
<br /> </select>
<select class="form-control" name="cargo" id="id_cargo"> </div>
{% for c in cargos_vagos %}
<option value="{{c.id}}">{{c}}</option> </div>
{% endfor %} </fieldset>
</select>
</div>
{% endif %}
</div>
</fieldset>
</form>
{% endif %} {% endif %}
{% endblock detail_content %} {% endblock detail_content %}
@ -92,29 +86,76 @@
{% block extra_js %} {% block extra_js %}
<script language="Javascript"> <script language="Javascript">
function altera_legislatura(){
var id_legislatura = $("#id_legislatura").val();
// Se a composicao estiver completa, deve-se esconder o botão e os
// campos de inserção
$(document).ready(function(){
if($("#id_parlamentar").val() == null || $("#id_cargo").val() == null){
$("#id_parlamentar").hide();
$("#id_cargo").hide();
$("#parlamentar-cargo-title").hide();
$('#id_incluir').hide();
}
else{
$("#id_parlamentar").show();
$("#id_cargo").show();
$("#parlamentar-cargo-title").show();
$('#id_incluir').show();
}
// Se a composição estiver vazia, deve-se esconder
// de Excluir
if (!$("#id_composicao_mesa option").val()){
$("#id_excluir").hide()
}
else{
$("#id_excluir").show()
}
});
// Atualiza os campos após alguma operação de mudança da Legislatura/Sessao ou
// Inserção/Remoção
function altera_field(id_field, incluir_excluir_op=null){
// Pega o novo valor do campo que foi modificado (Sessao/Legislatura) ou utiliza
// o valor da Legislatura, por conveniência, quando há alguma inserção ou remoção
var field = $(id_field).val();
// Limpa os campos que serão atualizados
$("#id_sessao_legislativa option").remove(); $("#id_sessao_legislativa option").remove();
$("#id_composicao_mesa option").remove(); $("#id_composicao_mesa option").remove();
$("#id_parlamentar option").remove(); $("#id_parlamentar option").remove();
$("#id_cargo option").remove(); $("#id_cargo option").remove();
$.get("/mesa-diretora/altera-legislatura", {legislatura: id_legislatura}, function(data) { $.get("/mesa-diretora/altera-field-mesa",
{field: field, id_field: id_field, incluir_excluir_op: incluir_excluir_op},
function(data) {
// Caso não venha nenhum dado da requisição, retorna null
if ($.isEmptyObject(data)){
return null
}
lista_sessoes = data['lista_sessoes']; lista_sessoes = data['lista_sessoes'];
lista_composicao = data['lista_composicao']; lista_composicao = data['lista_composicao'];
lista_parlamentares = data['lista_parlamentares']; lista_parlamentares = data['lista_parlamentares'];
lista_cargos = data['lista_cargos']; lista_cargos = data['lista_cargos'];
// Atualiza a listagem dos campos
for (i = 0; i < lista_sessoes.length; i++) { for (i = 0; i < lista_sessoes.length; i++) {
$('#id_sessao_legislativa').append('<option value="' + lista_sessoes[i][0] + '">' + lista_sessoes[i][1] + '</option>'); $('#id_sessao_legislativa').append('<option value="' + lista_sessoes[i][0] + '">' + lista_sessoes[i][1] + '</option>');
} }
for (i = 0; i < lista_composicao.length; i++) { for (i = 0; i < lista_composicao.length; i++) {
$('#id_composicao_mesa').append('<option value="' + lista_composicao[i][0] + '">' + lista_composicao[i][1] + '</option>'); $('#id_composicao_mesa').append('<option value="' + lista_composicao[i][0] + '">' + lista_composicao[i][1] + ' || ' + lista_composicao[i][2] + '</option>');
} }
// Caso ainda tenha parlamentares/cargos a serem inseridos, preenche a listagem com
// os disponíveis e garante que as ferramentas de inserção estejam disponíveis
if (lista_parlamentares.length != 0 && lista_cargos.length != 0){ if (lista_parlamentares.length != 0 && lista_cargos.length != 0){
$('#id_incluir').show()
$('#id_cargo').show();
$('#id_parlamentar').show();
$("#parlamentar-cargo-title").show();
for (i = 0; i < lista_parlamentares.length; i++) { for (i = 0; i < lista_parlamentares.length; i++) {
$('#id_parlamentar').append('<option value="' + lista_parlamentares[i][0] + '">' + lista_parlamentares[i][1] + '</option>'); $('#id_parlamentar').append('<option value="' + lista_parlamentares[i][0] + '">' + lista_parlamentares[i][1] + '</option>');
} }
@ -122,11 +163,89 @@
for (i = 0; i < lista_cargos.length; i++) { for (i = 0; i < lista_cargos.length; i++) {
$('#id_cargo').append('<option value="' + lista_cargos[i][0] + '">' + lista_cargos[i][1] + '</option>'); $('#id_cargo').append('<option value="' + lista_cargos[i][0] + '">' + lista_cargos[i][1] + '</option>');
} }
} }
// Caso contrário, esconde do usuário essas opções
else{
$('#id_incluir').hide();
$('#id_cargo').hide();
$('#id_parlamentar').hide();
$("#parlamentar-cargo-title").hide();
}
// Garante que o botão de remoção aparecerá, caso tenha
// algum parlamentar na composição
if (lista_composicao.length != 0){
$("#id_excluir").show()
}
else{
$("#id_excluir").hide()
}
// Garante que a Sessão atual será a selecionada previamente e, no caso em que
// o campo modificado seja o de Legislatura, que a Sessão seja a última daquela
// legislatura
$("#id_sessao_legislativa").val(data['sessao_selecionada'])
}); });
} }
$("#id_legislatura").change(altera_legislatura); //#######################################################
//# EVENT HANDLERS #
//#######################################################
$("#id_legislatura").change(function(){
altera_field("#id_legislatura");
});
$("#id_sessao_legislativa").change(function(){
altera_field("#id_sessao_legislativa");
});
$('#id_incluir').click(function(){
$.ajax({
data: {sessao: $("#id_sessao_legislativa").val(),
parlamentar: $("#id_parlamentar").val(),
cargo: $("#id_cargo").val()},
type: 'POST',
url: "{% url 'sapl.parlamentares:insere_parlamentar_composicao' %}",
headers: {
'X-CSRFToken': getCookie('csrftoken')
},
success: function(data){
// if ('erro' in data){
// if (data['erro'].length > 0){
// alert(data['erro'])
// }
// }
setTimeout(function(data){
// Atualiza os campos após a inserção
altera_field("#id_legislatura", $("#id_sessao_legislativa").val())
}, 500)
},
});
})
$('#id_excluir').click(function(){
// Pega o id do parlamentar que foi selecionado
selecionado = $("#id_composicao_mesa option:selected").val()
if (selecionado){
$.ajax({
data: {composicao_mesa: selecionado},
type: 'POST',
url: "{% url 'sapl.parlamentares:remove_parlamentar_composicao' %}",
headers: {
'X-CSRFToken': getCookie('csrftoken')
},
success: function(data){
setTimeout(function(data){
// Atualiza os campos após a remoção
altera_field("#id_legislatura", $("#id_sessao_legislativa").val())
}, 500)
},
});
}
});
</script> </script>

Loading…
Cancel
Save