From f13bad5550960b928f995f4d4398e6d5a3a9f2d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Fri, 21 Dec 2018 16:37:29 -0200 Subject: [PATCH] =?UTF-8?q?Adicionar=20identifica=C3=A7=C3=A3o=20de=20auto?= =?UTF-8?q?res=20duplicados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/urls.py | 6 ++- sapl/base/views.py | 53 +++++++++++++++++++-- sapl/templates/base/autores_duplicados.html | 34 +++++++++++++ 3 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 sapl/templates/base/autores_duplicados.html diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 168703071..e659ea212 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -31,7 +31,8 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, ListarInconsistenciasView, ListarProtocolosDuplicadosView, ListarProtocolosMateriasView, ListarMatProtocoloInexistenteView, - ListarParlMandatosIntersecaoView) + ListarParlMandatosIntersecaoView, + ListarAutoresDuplicadosView) app_name = AppConfig.name @@ -146,6 +147,9 @@ urlpatterns = [ url(r'^sistema/inconsistencias/parlamentares_mandatos_intersecao$', ListarParlMandatosIntersecaoView.as_view(), name='lista_parlamentares_mandatos_intersecao'), + url(r'^sistema/inconsistencias/autores_duplicados$', + ListarAutoresDuplicadosView.as_view(), + name='lista_autores_duplicados'), # 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 aad8787ac..68694979c 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -929,27 +929,72 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView): tabela.append( ('protocolos_duplicados', 'Protocolos duplicados', - len(protocolos_duplicados())) + len(protocolos_duplicados()) ) + ) tabela.append( ('protocolos_materias', 'Protocolos que excedem o limite de matérias vinculadas', - len(protocolos_materias())) + len(protocolos_materias()) ) + ) tabela.append( ('materias_protocolo_inexistente', 'Matérias Legislativas com protocolo inexistente', - len(materias_protocolo_inexistente())) + len(materias_protocolo_inexistente()) ) + ) tabela.append( ('parlamentares_mandatos_intersecao', 'Parlamentares com mandatos com interseção', - len(parlamentares_mandatos_intersecao())) + len(parlamentares_mandatos_intersecao()) ) + ) + tabela.append( + ('autores_duplicados', + 'Autores duplicados', + len(autores_duplicados()) + ) + ) return tabela +def autores_duplicados(): + autores = {} + for a in Autor.objects.all(): + key = "{}".format(a.nome) + val = autores.get(key, list()) + val.append(a) + autores[key] = val + + lista_duplicados = [v for (k, v) in autores.items() if len(v) > 1] + return [(v[0], len(v)) for v in lista_duplicados] + + +class ListarAutoresDuplicadosView(PermissionRequiredMixin, ListView): + model = get_user_model() + template_name = 'base/autores_duplicados.html' + context_object_name = 'autores_duplicados' + permission_required = ('base.list_appconfig',) + paginate_by = 10 + + def get_queryset(self): + return autores_duplicados() + + def get_context_data(self, **kwargs): + context = super( + ListarAutoresDuplicadosView, 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 parlamentares_mandatos_intersecao(): intersecoes = [] for parlamentar in Parlamentar.objects.all(): diff --git a/sapl/templates/base/autores_duplicados.html b/sapl/templates/base/autores_duplicados.html new file mode 100644 index 000000000..d51a24d74 --- /dev/null +++ b/sapl/templates/base/autores_duplicados.html @@ -0,0 +1,34 @@ +{% extends "base.html" %} +{% load i18n %} +{% load tz %} +{% load common_tags %} +{% block base_content %} +
+

Lista de Autores Duplicados

+ {% if not autores_duplicados %} +

{{ NO_ENTRIES_MSG }}

+ {% else %} + + + + + + + + + + {% for autor, quantidade in autores_duplicados %} + + + + + + {% endfor %} + +
AutorTipo de AutorQuantidade
+ {{ autor }} + {{ autor.tipo }}{{ quantidade }}
+ {% endif %} +
+ {% include 'paginacao.html'%} +{% endblock base_content %} \ No newline at end of file