Browse Source

Adicionar identificação de autores duplicados

pull/2454/head
João Rodrigues 7 years ago
committed by João Rodrigues
parent
commit
f13bad5550
  1. 6
      sapl/base/urls.py
  2. 53
      sapl/base/views.py
  3. 34
      sapl/templates/base/autores_duplicados.html

6
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')

53
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():

34
sapl/templates/base/autores_duplicados.html

@ -0,0 +1,34 @@
{% extends "base.html" %}
{% load i18n %}
{% load tz %}
{% load common_tags %}
{% block base_content %}
<fieldset>
<h1>Lista de Autores Duplicados</h1>
{% if not autores_duplicados %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Autor</th>
<th>Tipo de Autor</th>
<th>Quantidade</th>
</tr>
</thead>
<tbody>
{% for autor, quantidade in autores_duplicados %}
<tr>
<td>
<a>{{ autor }}</a>
</td>
<td>{{ autor.tipo }}</td>
<td>{{ quantidade }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</fieldset>
{% include 'paginacao.html'%}
{% endblock base_content %}
Loading…
Cancel
Save