Browse Source

Identificar parl. com filiações em interseção

Refatorar
pull/2594/head
João 7 years ago
committed by João Rodrigues
parent
commit
2b54975c08
  1. 4
      sapl/base/urls.py
  2. 78
      sapl/base/views.py
  3. 34
      sapl/templates/base/parlamentares_filiacoes_intersecao.html
  4. 4
      sapl/templates/base/parlamentares_mandatos_intersecao.html

4
sapl/base/urls.py

@ -35,6 +35,7 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
ListarFiliacoesSemDataFiliacaoView,
ListarMandatoSemDataInicioView,
ListarParlMandatosIntersecaoView,
ListarParlFiliacoesIntersecaoView,
ListarAutoresDuplicadosView,
ListarBancadaComissaoAutorExternoView,
ListarLegislaturaInfindavelView)
@ -162,6 +163,9 @@ urlpatterns = [
url(r'^sistema/inconsistencias/parlamentares_mandatos_intersecao$',
ListarParlMandatosIntersecaoView.as_view(),
name='lista_parlamentares_mandatos_intersecao'),
url(r'^sistema/inconsistencias/parlamentares_filiacoes_intersecao$',
ListarParlFiliacoesIntersecaoView.as_view(),
name='lista_parlamentares_filiacoes_intersecao'),
url(r'^sistema/inconsistencias/autores_duplicados$',
ListarAutoresDuplicadosView.as_view(),
name='lista_autores_duplicados'),

78
sapl/base/views.py

@ -969,10 +969,16 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
)
tabela.append(
('parlamentares_mandatos_intersecao',
'Parlamentares com mandatos com interseção',
'Parlamentares com mandatos em interseção',
len(parlamentares_mandatos_intersecao())
)
)
tabela.append(
('parlamentares_filiacoes_intersecao',
'Parlamentares com filiações em interseção',
len(parlamentares_filiacoes_intersecao())
)
)
tabela.append(
('autores_duplicados',
'Autores duplicados',
@ -1069,7 +1075,7 @@ class ListarBancadaComissaoAutorExternoView(PermissionRequiredMixin, ListView):
page_obj.number, paginator.num_pages)
context[
'NO_ENTRIES_MSG'
] = 'Nenhum encontrado.'
] = 'Nenhuma encontrada.'
return context
@ -1102,25 +1108,42 @@ 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)]
def parlamentares_filiacoes_intersecao():
intersecoes = []
for parlamentar in Parlamentar.objects.all().order_by('nome_parlamentar'):
filiacoes = parlamentar.filiacao_set.all()
combinacoes = itertools.combinations(filiacoes, 2)
class ListarParlamentaresDuplicadosView(PermissionRequiredMixin, ListView):
for c in combinacoes:
data_filiacao1 = c[0].data
data_desfiliacao1 = c[0].data_desfiliacao if c[0].data_desfiliacao else timezone.now().date()
data_filiacao2 = c[1].data
data_desfiliacao2 = c[1].data_desfiliacao if c[1].data_desfiliacao else timezone.now().date()
if data_filiacao1 and data_filiacao2:
exists = intervalos_tem_intersecao(
data_filiacao1, data_desfiliacao1,
data_filiacao2, data_desfiliacao2)
if exists:
intersecoes.append((parlamentar, c[0], c[1]))
return intersecoes
class ListarParlFiliacoesIntersecaoView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/parlamentares_duplicados.html'
context_object_name = 'parlamentares_duplicados'
template_name = 'base/parlamentares_filiacoes_intersecao.html'
context_object_name = 'parlamentares_filiacoes_intersecao'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return parlamentares_duplicados()
return parlamentares_filiacoes_intersecao()
def get_context_data(self, **kwargs):
context = super(
ListarParlamentaresDuplicadosView, self).get_context_data(**kwargs)
ListarParlFiliacoesIntersecaoView, self).get_context_data(**kwargs)
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
@ -1134,7 +1157,7 @@ class ListarParlamentaresDuplicadosView(PermissionRequiredMixin, ListView):
def parlamentares_mandatos_intersecao():
intersecoes = []
for parlamentar in Parlamentar.objects.all().order_by('nome_completo'):
for parlamentar in Parlamentar.objects.all().order_by('nome_parlamentar'):
mandatos = parlamentar.mandato_set.all()
combinacoes = itertools.combinations(mandatos, 2)
@ -1178,6 +1201,35 @@ class ListarParlMandatosIntersecaoView(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 mandato_sem_data_inicio():
return Mandato.objects.filter(data_inicio_mandato__isnull=True).order_by('parlamentar')
@ -1202,7 +1254,7 @@ class ListarMandatoSemDataInicioView(PermissionRequiredMixin, ListView):
page_obj.number, paginator.num_pages)
context[
'NO_ENTRIES_MSG'
] = 'Nenhum encontrada.'
] = 'Nenhum encontrado.'
return context

34
sapl/templates/base/parlamentares_filiacoes_intersecao.html

@ -0,0 +1,34 @@
{% extends "base.html" %}
{% load common_tags %}
{% block base_content %}
<fieldset>
<h1>Lista de Parlamentares com Filiações com Interseção</h1>
<br/>
{% if not parlamentares_filiacoes_intersecao %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Parlamentar</th>
<th>Filiação 1</th>
<th>Filiação 2</th>
</tr>
</thead>
<tbody>
{% for parlamentar, filiacao_a , filiacao_b in parlamentares_filiacoes_intersecao %}
<tr>
<td>
<a href="{% url 'sapl_index' %}parlamentar/{{ parlamentar.pk }}/filiacao">{{ parlamentar }}</a>
</td>
<td>{{filiacao_a.data|date:"d/m/Y"}} - {{filiacao_a.data_desfiliacao|date:"d/m/Y"}}</td>
<td>{{filiacao_b.data|date:"d/m/Y"}} - {{filiacao_b.data_desfiliacao|date:"d/m/Y"}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</fieldset>
{% include 'paginacao.html'%}
<br/>
{% endblock base_content %}

4
sapl/templates/base/parlamentares_mandatos_intersecao.html

@ -2,7 +2,7 @@
{% load common_tags %}
{% block base_content %}
<fieldset>
<h1>Lista de Parlamentares com Mandatos com Interseção</h1>
<h1>Lista de Parlamentares com Mandatos em Interseção</h1>
<br/>
{% if not parlamentares_mandatos_intersecao %}
<p>{{ NO_ENTRIES_MSG }}</p>
@ -19,7 +19,7 @@
{% for parlamentar, mandato_a, mandato_b in parlamentares_mandatos_intersecao %}
<tr>
<td>
<a href="{% url 'sapl_index' %}parlamentar/{{ parlamentar.pk }}">{{ parlamentar }}</a>
<a href="{% url 'sapl_index' %}parlamentar/{{ parlamentar.pk }}/mandato">{{ parlamentar }}</a>
</td>
<td>{{ mandato_a.legislatura}}</br>{{mandato_a.data_inicio_mandato|date:"d/m/Y"}} - {{mandato_a.data_fim_mandato|date:"d/m/Y"}}</td>
<td>{{ mandato_b.legislatura }}</br>{{mandato_b.data_inicio_mandato|date:"d/m/Y"}} - {{mandato_b.data_fim_mandato|date:"d/m/Y"}}</td>

Loading…
Cancel
Save