From fdfa5ecd86e817be248339d75a1cacc5cfcde0ac 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/views.py | 53 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/sapl/base/views.py b/sapl/base/views.py index 5013a0989..0d44539d0 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -1436,27 +1436,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():