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): def altera_field_mesa(request):
""" """
Essa função lida com qualquer alteração nos campos Essa função lida com qualquer alteração nos campos
da Mesa Diretora, atualizando os campos após cada da Mesa Diretora, após qualquer
alteração operação (Legislatura/Sessão/Inclusão/Remoção),
atualizando os campos após cada alteração
""" """
# Verifica qual o campo que foi alterado legislatura = request.GET['legislatura']
if request.GET['id_field'] == '#id_legislatura': sessoes = SessaoLegislativa.objects.filter(
legislatura_id = request.GET['field'] legislatura=legislatura).order_by('-data_inicio')
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 if not sessoes:
# 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)})
if not sessao:
return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)}) 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( composicao_mesa = ComposicaoMesa.objects.filter(
sessao_legislativa=sessao_selecionada) sessao_legislativa=sessao_selecionada)
@ -460,14 +451,14 @@ def altera_field_mesa(request):
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=legislatura_id).mandato_set.all() id=legislatura).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(
[p.parlamentar for p in parlamentares]) - set( [p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados)) 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__(), lista_composicao = [(c.id, c.parlamentar.__str__(),
c.cargo.__str__()) for c in composicao_mesa] c.cargo.__str__()) for c in composicao_mesa]
lista_parlamentares = [( lista_parlamentares = [(
@ -479,7 +470,7 @@ def altera_field_mesa(request):
'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, 'sessao_selecionada': sessao_selecionada,
'msg': ('', 1)}) 'msg': ('', 1)})

41
sapl/templates/parlamentares/composicaomesa_form.html

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

Loading…
Cancel
Save