diff --git a/sapl/base/urls.py b/sapl/base/urls.py
index 005f12d71..a527b495d 100644
--- a/sapl/base/urls.py
+++ b/sapl/base/urls.py
@@ -31,6 +31,7 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
ListarInconsistenciasView, ListarProtocolosDuplicadosView,
ListarProtocolosComMateriasView,
ListarMatProtocoloInexistenteView,
+ ListarParlamentaresDuplicadosView,
ListarParlMandatosIntersecaoView,
ListarAutoresDuplicadosView,
ListarBancadaComissaoAutorExternoView,
@@ -151,6 +152,9 @@ urlpatterns = [
url(r'^sistema/inconsistencias/mandato_sem_data_inicio',
ListarMandatoSemDataInicioView.as_view(),
name='lista_mandato_sem_data_inicio'),
+ url(r'^sistema/inconsistencias/parlamentares_duplicados$',
+ ListarParlamentaresDuplicadosView.as_view(),
+ name='lista_parlamentares_duplicados'),
url(r'^sistema/inconsistencias/parlamentares_mandatos_intersecao$',
ListarParlMandatosIntersecaoView.as_view(),
name='lista_parlamentares_mandatos_intersecao'),
diff --git a/sapl/base/views.py b/sapl/base/views.py
index 00271babc..66d1d4800 100644
--- a/sapl/base/views.py
+++ b/sapl/base/views.py
@@ -955,6 +955,12 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
len(mandato_sem_data_inicio())
)
)
+ tabela.append(
+ ('parlamentares_duplicados',
+ 'Parlamentares duplicados',
+ len(parlamentares_duplicados())
+ )
+ )
tabela.append(
('parlamentares_mandatos_intersecao',
'Parlamentares com mandatos com interseção',
@@ -1062,7 +1068,9 @@ class ListarBancadaComissaoAutorExternoView(PermissionRequiredMixin, ListView):
def autores_duplicados():
- return [autor.values() for autor in Autor.objects.values('nome', 'tipo__descricao').annotate(count=Count('nome')).filter(count__gt=1)]
+ return [autor.values() for autor in Autor.objects.values(
+ 'nome', 'tipo__descricao').order_by(
+ "nome").annotate(count=Count('nome')).filter(count__gt=1)]
class ListarAutoresDuplicadosView(PermissionRequiredMixin, ListView):
@@ -1088,6 +1096,35 @@ class ListarAutoresDuplicadosView(PermissionRequiredMixin, ListView):
return context
+def parlamentares_duplicados():
+ return [parlamentar.values() for parlamentar in Parlamentar.objects.values(
+ 'nome_parlamentar').order_by('nome_parlamentar').annotate(count=Count(
+ 'nome_parlamentar')).filter(count__gt=1)]
+
+
+class ListarParlamentaresDuplicadosView(PermissionRequiredMixin, ListView):
+ model = get_user_model()
+ template_name = 'base/parlamentares_duplicados.html'
+ context_object_name = 'parlamentares_duplicados'
+ permission_required = ('base.list_appconfig',)
+ paginate_by = 10
+
+ def get_queryset(self):
+ return parlamentares_duplicados()
+
+ def get_context_data(self, **kwargs):
+ context = super(
+ ListarParlamentaresDuplicadosView, 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 = []
diff --git a/sapl/templates/base/autores_duplicados.html b/sapl/templates/base/autores_duplicados.html
index 57068375b..bcfc3c806 100644
--- a/sapl/templates/base/autores_duplicados.html
+++ b/sapl/templates/base/autores_duplicados.html
@@ -27,4 +27,5 @@
{% endif %}
{% include 'paginacao.html'%}
+
{% endblock base_content %}
\ No newline at end of file
diff --git a/sapl/templates/base/bancada_comissao_autor_externo.html b/sapl/templates/base/bancada_comissao_autor_externo.html
index b4471ed1c..e55a51998 100644
--- a/sapl/templates/base/bancada_comissao_autor_externo.html
+++ b/sapl/templates/base/bancada_comissao_autor_externo.html
@@ -31,4 +31,5 @@
{% endif %}
{% include 'paginacao.html'%}
+
{% endblock base_content %}
\ No newline at end of file
diff --git a/sapl/templates/base/legislatura_infindavel.html b/sapl/templates/base/legislatura_infindavel.html
index b2a772ecc..b6563a9e9 100644
--- a/sapl/templates/base/legislatura_infindavel.html
+++ b/sapl/templates/base/legislatura_infindavel.html
@@ -27,4 +27,5 @@
{% endif %}
{% include 'paginacao.html'%}
+
{% endblock base_content %}
\ No newline at end of file
diff --git a/sapl/templates/base/lista_inconsistencias.html b/sapl/templates/base/lista_inconsistencias.html
index 735dd21d1..b35ca181e 100644
--- a/sapl/templates/base/lista_inconsistencias.html
+++ b/sapl/templates/base/lista_inconsistencias.html
@@ -17,4 +17,5 @@
{% include 'paginacao.html'%}
+
{% endblock base_content %}
\ No newline at end of file
diff --git a/sapl/templates/base/mandato_sem_data_inicio.html b/sapl/templates/base/mandato_sem_data_inicio.html
index 110995ad2..1eb0bc1b9 100644
--- a/sapl/templates/base/mandato_sem_data_inicio.html
+++ b/sapl/templates/base/mandato_sem_data_inicio.html
@@ -27,4 +27,5 @@
{% endif %}
{% include 'paginacao.html'%}
+
{% endblock base_content %}
\ No newline at end of file
diff --git a/sapl/templates/base/materias_protocolo_inexistente.html b/sapl/templates/base/materias_protocolo_inexistente.html
index 40bf34b78..08ac21318 100644
--- a/sapl/templates/base/materias_protocolo_inexistente.html
+++ b/sapl/templates/base/materias_protocolo_inexistente.html
@@ -29,4 +29,5 @@
{% endif %}
{% include 'paginacao.html'%}
+
{% endblock base_content %}
\ No newline at end of file
diff --git a/sapl/templates/base/parlamentares_duplicados.html b/sapl/templates/base/parlamentares_duplicados.html
new file mode 100644
index 000000000..690cdb07e
--- /dev/null
+++ b/sapl/templates/base/parlamentares_duplicados.html
@@ -0,0 +1,31 @@
+{% extends "base.html" %}
+{% load common_tags %}
+{% block base_content %}
+