Browse Source

Otimiza o codigo

pull/1022/head
Eduardo Calil 9 years ago
parent
commit
75effb46e6
  1. 55
      sapl/parlamentares/views.py
  2. 41
      sapl/templates/parlamentares/composicaomesa_form.html

55
sapl/parlamentares/views.py

@ -418,40 +418,31 @@ class MesaDiretoraView(FormView):
def altera_field_mesa(request):
"""
Essa função lida com qualquer alteração nos campos
da Mesa Diretora, atualizando os campos após cada
alteração
da Mesa Diretora, após qualquer
operação (Legislatura/Sessão/Inclusão/Remoção),
atualizando os campos após cada alteração
"""
# Verifica qual o campo que foi alterado
if request.GET['id_field'] == '#id_legislatura':
legislatura_id = request.GET['field']
sessao = SessaoLegislativa.objects.filter(
legislatura=request.GET['field']).order_by('-data_inicio')
try:
sessao_selecionada = sessao[0]
# Passa, pois essa exceção será capturada no 'if not sessao'
except IndexError:
pass
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)})
legislatura = request.GET['legislatura']
sessoes = SessaoLegislativa.objects.filter(
legislatura=legislatura).order_by('-data_inicio')
if not sessao:
if not sessoes:
return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)})
# Verifica se já tem uma sessão selecionada. Ocorre quando
# é alterado o campo de sessão ou feita alguma operação
# de inclusão/remoção.
if request.GET['sessao']:
sessao_selecionada = request.GET['sessao']
# Caso a mudança tenha sido no campo legislatura, a sessão
# atual deve ser a primeira daquela legislatura
else:
sessao_selecionada = SessaoLegislativa.objects.filter(
legislatura=legislatura).order_by(
'-data_inicio').first().id
# Atualiza os componentes da view após a mudança
composicao_mesa = ComposicaoMesa.objects.filter(
sessao_legislativa=sessao_selecionada)
@ -460,14 +451,14 @@ def altera_field_mesa(request):
cargos_vagos = list(set(cargos) - set(cargos_ocupados))
parlamentares = Legislatura.objects.get(
id=legislatura_id).mandato_set.all()
id=legislatura).mandato_set.all()
parlamentares_ocupados = [m.parlamentar for m in composicao_mesa]
parlamentares_vagos = list(
set(
[p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados))
lista_sessoes = [(s.id, s.__str__()) for s in sessao]
lista_sessoes = [(s.id, s.__str__()) for s in sessoes]
lista_composicao = [(c.id, c.parlamentar.__str__(),
c.cargo.__str__()) for c in composicao_mesa]
lista_parlamentares = [(
@ -479,7 +470,7 @@ def altera_field_mesa(request):
'lista_composicao': lista_composicao,
'lista_parlamentares': lista_parlamentares,
'lista_cargos': lista_cargos,
'sessao_selecionada': sessao_selecionada.id,
'sessao_selecionada': sessao_selecionada,
'msg': ('', 1)})

41
sapl/templates/parlamentares/composicaomesa_form.html

@ -101,6 +101,10 @@
<script language="Javascript">
//##############################################################
// Inicialização da View #
//##############################################################
// Se a composicao estiver completa, deve-se esconder o botão e os
// campos de inserção
$(document).ready(function(){
@ -127,6 +131,10 @@
}
});
//##############################################################
//# EVENT HANDLERS #
//##############################################################
function errors_handler(msg){
if (msg == null){
$("#div-success").hide()
@ -149,10 +157,11 @@
// 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, msg=null){
function altera_field(id_legislatura, id_sessao=null, msg=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();
var sessao_value = id_sessao
var legislatura_value = id_legislatura
// Limpa os campos que serão atualizados
$("#id_sessao_legislativa option").remove();
@ -161,7 +170,7 @@
$("#id_cargo option").remove();
$.get("/mesa-diretora/altera-field-mesa",
{field: field, id_field: id_field, incluir_excluir_op: incluir_excluir_op},
{legislatura: legislatura_value, sessao: sessao_value},
function(data) {
// Caso não venha nenhum dado da requisição, retorna null
if ($.isEmptyObject(data)){
@ -232,15 +241,18 @@
});
}
//#######################################################
//# EVENT HANDLERS #
//#######################################################
//#############################################################
//# EVENTS CATCH #
//#############################################################
$("#id_legislatura").change(function(){
altera_field("#id_legislatura");
legislatura = $("#id_legislatura").val();
altera_field(legislatura);
});
$("#id_sessao_legislativa").change(function(){
altera_field("#id_sessao_legislativa");
legislatura = $("#id_legislatura").val();
sessao = $("#id_sessao_legislativa").val();
altera_field(legislatura, sessao);
});
$('#id_incluir').click(function(){
@ -254,10 +266,12 @@
'X-CSRFToken': getCookie('csrftoken')
},
success: function(data){
var msg = data['msg']
var msg = data['msg'];
legislatura = $("#id_legislatura").val();
sessao = $("#id_sessao_legislativa").val();
setTimeout(function(data){
// Atualiza os campos após a inserção
altera_field("#id_legislatura", $("#id_sessao_legislativa").val(), msg)
altera_field(legislatura, sessao, msg)
}, 500)
},
});
@ -276,10 +290,13 @@
'X-CSRFToken': getCookie('csrftoken')
},
success: function(data){
var msg = data['msg']
var msg = data['msg'];
legislatura = $("#id_legislatura").val();
sessao = $("#id_sessao_legislativa").val();
setTimeout(function(data){
// Atualiza os campos após a remoção
altera_field("#id_legislatura", $("#id_sessao_legislativa").val(), msg)
altera_field(legislatura, sessao, msg)
}, 500)
},
});

Loading…
Cancel
Save