diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 4ede5f905..bb431f582 100644 --- a/sapl/parlamentares/views.py +++ b/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') + legislatura = request.GET['legislatura'] + sessoes = SessaoLegislativa.objects.filter( + legislatura=legislatura).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)}) - - 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)}) diff --git a/sapl/templates/parlamentares/composicaomesa_form.html b/sapl/templates/parlamentares/composicaomesa_form.html index c1d0fad36..855313442 100644 --- a/sapl/templates/parlamentares/composicaomesa_form.html +++ b/sapl/templates/parlamentares/composicaomesa_form.html @@ -101,6 +101,10 @@