From 3b5d5fd5d5a0d878ebc6b4f14504b0797424df19 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Tue, 19 Nov 2019 12:15:44 -0300 Subject: [PATCH] WIP --- sapl/parlamentares/urls.py | 5 +- sapl/parlamentares/views.py | 67 +++++++++++++++++++ .../parlamentares/composicaomesa_form.html | 61 +++++++++++++++++ sapl/webpack-stats.json | 2 +- 4 files changed, 133 insertions(+), 2 deletions(-) diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index 6e175bafe..960d49c92 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -20,7 +20,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud, remove_parlamentar_composicao, parlamentares_filiados, BlocoCrud, PesquisarParlamentarView, VincularParlamentarView, - get_sessoes_legislatura) + get_sessoes_legislatura, get_mesa_diretora) from .apps import AppConfig @@ -80,6 +80,9 @@ urlpatterns = [ url(r'^mesa-diretora/$', MesaDiretoraView.as_view(), name='mesa_diretora'), + url(r'^mesa-diretora/dados/$', + get_mesa_diretora, name='dados_mesa'), + url(r'^mesa-diretora/altera-field-mesa/$', altera_field_mesa, name='altera_field_mesa'), diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 4adf325f6..1a82bea00 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -864,6 +864,73 @@ class MesaDiretoraView(FormView): }) +def get_mesa_diretora(request): + if not Legislatura.objects.exists() or \ + not SessaoLegislativa.objects.exists(): + return JsonResponse([]) + + leg_atual = True + legislaturas = [] + for leg in Legislatura.objects\ + .prefetch_related('sessaolegislativa_set')\ + .all()\ + .order_by('-numero'): + + sessoes = leg.sessaolegislativa_set.all().order_by('-numero') + sessao_list = [] + sessao_atual = True + + for s in sessoes: + mesa = ComposicaoMesa.objects\ + .select_related('parlamentar', 'cargo')\ + .filter(sessao_legislativa=s)\ + .values_list('id', + 'parlamentar_id', + 'parlamentar__nome_parlamentar', + 'cargo_id', + 'cargo__descricao',)\ + .order_by('cargo_id') + + keys = ['mesa_cargo_id', + 'parlamentar_id', + 'nome_parlamentar', + 'cargo_id', + 'cargo_descricao'] + + mesas = [] + for m in mesa: + mesas.append({k: v for k, v in zip(keys, m)}) + + sessao = { + "id": s.id, + "descricao": str(s), + "atual": sessao_atual, + "parlamentares_mesa": mesas, + } + sessao_list.append(sessao) + sessao_atual = False + + legislaturas.append({ + "id": leg.id, + "atual": leg_atual, + "descricao": str(leg).strip(), + "sessoes": sessao_list, + }) + + leg_atual = False + + data = { + "legislaturas": legislaturas, + "cargos_mesa": list(CargoMesa.objects.all().values_list('id', + 'descricao', + 'unico' + ).order_by('id' + )) + } + + return JsonResponse(data, safe=False) + + def altera_field_mesa(request): """ Essa função lida com qualquer alteração nos campos diff --git a/sapl/templates/parlamentares/composicaomesa_form.html b/sapl/templates/parlamentares/composicaomesa_form.html index 9a10c0d47..f303b6eb9 100644 --- a/sapl/templates/parlamentares/composicaomesa_form.html +++ b/sapl/templates/parlamentares/composicaomesa_form.html @@ -1,8 +1,64 @@ {% extends "crud/detail.html" %} + +{% load i18n staticfiles menus %} {% load i18n %} +{% load common_tags %} +{% load render_bundle from webpack_loader %} +{% load webpack_static from webpack_loader %} + {% block actions %} {% endblock %} {% block detail_content %} +
+
+ Escolha da Legislatura e da Sessão Legislativa +
+
+ + +
+
+ + +
+
+
+
+ Escolha da Composição da Mesa Diretora +
+
+ + +
+
+

+ {% if perms.parlamentares.add_composicaomesa %} + + {% endif %} +
+
+ {% if perms.parlamentares.add_cargomesa %} + + {% endif %} +
+
+
+
+ {% if sessoes|length == 0 %}