From 25eaae7889ce8494a5193152745612138637de7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Wed, 2 Jan 2019 18:06:02 -0200 Subject: [PATCH] =?UTF-8?q?Identificar=20bancadas=20e=20comiss=C3=B5es=20c?= =?UTF-8?q?om=20autor=20externo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/urls.py | 8 +- sapl/base/views.py | 85 +++++++++++++++++-- .../base/bancada_comissao_autor_externo.html | 34 ++++++++ 3 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 sapl/templates/base/bancada_comissao_autor_externo.html diff --git a/sapl/base/urls.py b/sapl/base/urls.py index e659ea212..fb7b81d5f 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -22,7 +22,7 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, RelatorioMateriasPorAnoAutorTipoView, RelatorioMateriasPorAutorView, RelatorioMateriasTramitacaoView, - RelatorioPresencaSessaoView, + RelatorioPresencaSessaoView, RelatorioReuniaoView, SaplSearchView, RelatorioNormasPublicadasMesView, RelatorioNormasVigenciaView, @@ -32,7 +32,8 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, ListarProtocolosMateriasView, ListarMatProtocoloInexistenteView, ListarParlMandatosIntersecaoView, - ListarAutoresDuplicadosView) + ListarAutoresDuplicadosView, + ListarBancadaComissaoAutorExternoView) app_name = AppConfig.name @@ -150,6 +151,9 @@ urlpatterns = [ url(r'^sistema/inconsistencias/autores_duplicados$', ListarAutoresDuplicadosView.as_view(), name='lista_autores_duplicados'), + url(r'^sistema/inconsistencias/bancada_comissao_autor_externo$', + ListarBancadaComissaoAutorExternoView.as_view(), + name='lista_bancada_comissao_autor_externo'), # todos os sublinks de sistema devem vir acima deste url(r'^sistema/$', permission_required('base.view_tabelas_auxiliares') diff --git a/sapl/base/views.py b/sapl/base/views.py index 68694979c..b85c1b3bb 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -38,7 +38,7 @@ from sapl.norma.models import (NormaJuridica, NormaEstatisticas) from sapl.parlamentares.models import Parlamentar from sapl.protocoloadm.models import Protocolo from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria, - SessaoPlenariaPresenca) + SessaoPlenariaPresenca, Bancada) from sapl.utils import (parlamentares_ativos, show_results_filter_set, mail_service_configured, intervalos_tem_intersecao) @@ -953,16 +953,91 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView): tabela.append( ('autores_duplicados', 'Autores duplicados', - len(autores_duplicados()) - ) + len(autores_duplicados()) + ) + ) + tabela.append( + ('bancada_comissao_autor_externo', + 'Bancadas e Comissões com autor externo', + len(bancada_comissao_autor_externo()) + ) ) return tabela +def bancada_comissao_autor_externo(): + lista_bancada_autor_externo = [] + lista_comissao_autor_externo = [] + + tipo_autor_externo = TipoAutor.objects.filter(descricao='Externo') + + for bancada in Bancada.objects.all(): + autor_externo = bancada.autor.filter(tipo=tipo_autor_externo) + + # if len(autor_externo) == 1: + + if len(autor_externo) > 0: + q_autor_externo = bancada.autor.get(tipo=tipo_autor_externo) + lista_bancada_autor_externo.append( + (q_autor_externo, bancada, 'Bancada') + ) + + # elif len(autor_externo) > 1: + # q_autor_externo = bancada.autor.get(tipo=tipo_autor_externo) + # for autor in q_autor_externo: + # lista_bancada_autor_externo.append( + # (q_autor_externo, bancada, 'Bancada') + # ) + + for comissao in Comissao.objects.all(): + autor_externo = comissao.autor.filter(tipo=tipo_autor_externo) + + # if len(autor_externo) == 1: + + if len(autor_externo) > 0: + q_autor_externo = comissao.autor.get(tipo=tipo_autor_externo) + lista_comissao_autor_externo.append( + (q_autor_externo, comissao, 'Comissão') + ) + + # elif len(autor_externo) > 1: + # q_autor_externo = comissao.autor.get(tipo=tipo_autor_externo) + # for autor in q_autor_externo: + # lista_comissao_autor_externo.append( + # (q_autor_externo, comissao, 'Comissão') + # ) + + return lista_bancada_autor_externo + lista_comissao_autor_externo + + +class ListarBancadaComissaoAutorExternoView(PermissionRequiredMixin, ListView): + model = get_user_model() + template_name = 'base/bancada_comissao_autor_externo.html' + context_object_name = 'bancada_comissao_autor_externo' + permission_required = ('base.list_appconfig',) + paginate_by = 10 + + def get_queryset(self): + return bancada_comissao_autor_externo() + + def get_context_data(self, **kwargs): + context = super( + ListarBancadaComissaoAutorExternoView, self + ).get_context_data(**kwargs) + paginator = context['paginator'] + page_obj = context['page_obj'] + context['page_range'] = make_pagination( + page_obj.number, paginator.num_pages) + context[ + 'NO_ENTRIES_MSG' + ] = 'Nenhum encontrado.' + return context + + def autores_duplicados(): autores = {} - for a in Autor.objects.all(): + for a in Autor.objects.all().order_by('nome'): key = "{}".format(a.nome) val = autores.get(key, list()) val.append(a) @@ -997,7 +1072,7 @@ class ListarAutoresDuplicadosView(PermissionRequiredMixin, ListView): def parlamentares_mandatos_intersecao(): intersecoes = [] - for parlamentar in Parlamentar.objects.all(): + for parlamentar in Parlamentar.objects.all().order_by('nome_completo'): mandatos = parlamentar.mandato_set.all() length = len(mandatos) if mandatos and length > 1: diff --git a/sapl/templates/base/bancada_comissao_autor_externo.html b/sapl/templates/base/bancada_comissao_autor_externo.html new file mode 100644 index 000000000..f56453917 --- /dev/null +++ b/sapl/templates/base/bancada_comissao_autor_externo.html @@ -0,0 +1,34 @@ +{% extends "base.html" %} +{% load i18n %} +{% load tz %} +{% load common_tags %} +{% block base_content %} +
+

Lista de Bancadas e Comissões com Autor Externo

+ {% if not bancada_comissao_autor_externo %} +

{{ NO_ENTRIES_MSG }}

+ {% else %} + + + + + + + + + + {% for autor, objeto, descricao_objeto in bancada_comissao_autor_externo %} + + + + + + {% endfor %} + +
AutorDescrição ObjetoObjeto
+ {{ autor.nome }} + {{ descricao_objeto }}{{ objeto }}
+ {% endif %} +
+ {% include 'paginacao.html'%} +{% endblock base_content %} \ No newline at end of file