From e84733ccc3b6c315123c1a78aa307b4f5e702d80 Mon Sep 17 00:00:00 2001 From: eduardocalil Date: Wed, 10 May 2017 13:53:15 -0300 Subject: [PATCH] =?UTF-8?q?Refatora=20Mesa=20Diretora=20para=20Usu=C3=A1ri?= =?UTF-8?q?o=20An=C3=B4nimo=20(#1078)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + sapl/parlamentares/urls.py | 4 + sapl/parlamentares/views.py | 99 ++++++++++++++++++- sapl/settings.py | 1 + .../parlamentares/composicaomesa_form.html | 3 +- .../public_composicaomesa_form.html | 89 ++++++++++++++++- 6 files changed, 186 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 52baa1622..b09b6cf6f 100644 --- a/.gitignore +++ b/.gitignore @@ -93,5 +93,6 @@ bower bower_components media whoosh/ +solr-4.10.2/ postgres-data/ data/ diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index 29a31adfb..0d8d406da 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -1,6 +1,7 @@ from django.conf.urls import include, url from sapl.parlamentares.views import (altera_field_mesa, + altera_field_mesa_public_view, CargoMesaCrud, ColigacaoCrud, ComposicaoColigacaoCrud, DependenteCrud, FiliacaoCrud, FrenteCrud, FrenteList, @@ -59,6 +60,9 @@ urlpatterns = [ url(r'^mesa-diretora/altera-field-mesa/$', altera_field_mesa, name='altera_field_mesa'), + url(r'^mesa-diretora/altera-field-mesa-public-view/$', + altera_field_mesa_public_view, name='altera_field_mesa_public_view'), + url(r'^mesa-diretora/insere-parlamentar-composicao/$', insere_parlamentar_composicao, name='insere_parlamentar_composicao'), diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 3c6ac630a..f9dc33f60 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -373,11 +373,9 @@ class ParlamentarCrud(Crud): # Caso exista mais de uma filiação nesse intervalo # Entretanto, NÃO DEVE OCORRER except MultipleObjectsReturned: - filiacao = parlamentar.filiacao_set.filter(Q( - data__lte=legislatura.data_fim, - data_desfiliacao__gte=legislatura.data_fim) | Q( - data__lte=legislatura.data_fim, - data_desfiliacao__isnull=True)).last() + row[2] = ( + 'O Parlamentar possui duas filiações conflitantes', + None) # Caso encontre UMA filiação nessas condições else: @@ -588,3 +586,94 @@ def remove_parlamentar_composicao(request): return JsonResponse( {'msg': ( 'Selecione algum parlamentar para ser excluido!', 0)}) + + +def partido_parlamentar_sessao_legislativa(sessao, parlamentar): + """ + Função para descobrir o partido do parlamentar durante + o período de uma dada Sessão Legislativa + """ + + # As condições para mostrar a filiação são: + # A data de filiacao deve ser menor que a data de fim + # da sessao legislativa e data de desfiliação deve nula, ou maior, + # ou igual a data de fim da sessao + try: + filiacao = parlamentar.filiacao_set.get(Q( + data__lte=sessao.data_fim, + data_desfiliacao__gte=sessao.data_fim) | Q( + data__lte=sessao.data_fim, + data_desfiliacao__isnull=True)) + + # Caso não exista filiação com essas condições + except ObjectDoesNotExist: + return '' + + # Caso exista mais de uma filiação nesse intervalo + # Entretanto, NÃO DEVE OCORRER + except MultipleObjectsReturned: + return 'O Parlamentar possui duas filiações conflitantes' + + # Caso encontre UMA filiação nessas condições + else: + return filiacao.partido.sigla + + +def altera_field_mesa_public_view(request): + """ + Essa função lida com qualquer alteração nos campos + da Mesa Diretora para usuários anônimos, + atualizando os campos após cada alteração + """ + + legislatura = request.GET['legislatura'] + sessoes = SessaoLegislativa.objects.filter( + legislatura=legislatura).order_by('-data_inicio') + + 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 + 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 = sessoes.first().id + + # Atualiza os componentes da view após a mudança + lista_sessoes = [(s.id, s.__str__()) for s in sessoes] + + composicao_mesa = ComposicaoMesa.objects.filter( + sessao_legislativa=sessao_selecionada) + + cargos_ocupados = [(m.cargo.id, + m.cargo.__str__()) for m in composicao_mesa] + + parlamentares_ocupados = [(m.parlamentar.id, + m.parlamentar.__str__() + ) for m in composicao_mesa] + + lista_fotos = [] + lista_partidos = [] + + sessao = SessaoLegislativa.objects.get(id=sessao_selecionada) + for p in parlamentares_ocupados: + parlamentar = Parlamentar.objects.get(id=p[0]) + lista_partidos.append( + partido_parlamentar_sessao_legislativa(sessao, + parlamentar)) + if parlamentar.fotografia: + lista_fotos.append(parlamentar.fotografia.url) + else: + lista_fotos.append(None) + + return JsonResponse( + {'lista_parlamentares': parlamentares_ocupados, + 'lista_partidos': lista_partidos, + 'lista_cargos': cargos_ocupados, + 'lista_sessoes': lista_sessoes, + 'lista_fotos': lista_fotos, + 'sessao_selecionada': sessao_selecionada, + 'msg': ('', 1)}) diff --git a/sapl/settings.py b/sapl/settings.py index 11b94b3de..3c757842e 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -208,6 +208,7 @@ LOCALE_PATHS = ( # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.8/howto/static-files/ + STATIC_URL = '/static/' STATIC_ROOT = PROJECT_DIR.child("collected_static") STATICFILES_DIRS = (BASE_DIR.child("static"),) diff --git a/sapl/templates/parlamentares/composicaomesa_form.html b/sapl/templates/parlamentares/composicaomesa_form.html index 855313442..6ba96835f 100644 --- a/sapl/templates/parlamentares/composicaomesa_form.html +++ b/sapl/templates/parlamentares/composicaomesa_form.html @@ -158,8 +158,7 @@ // Atualiza os campos após alguma operação de mudança da Legislatura/Sessao ou // Inserção/Remoção 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 + // Pega o novo valor dos campos modificados var sessao_value = id_sessao var legislatura_value = id_legislatura diff --git a/sapl/templates/parlamentares/public_composicaomesa_form.html b/sapl/templates/parlamentares/public_composicaomesa_form.html index fbd780a30..6eaa3f6e5 100644 --- a/sapl/templates/parlamentares/public_composicaomesa_form.html +++ b/sapl/templates/parlamentares/public_composicaomesa_form.html @@ -10,7 +10,7 @@
- {% for l in legislaturas %}
- {% for s in sessoes %}