Browse Source

Melhora query

pull/568/head
Eduardo Edson Batista Cordeiro Alves 8 years ago
parent
commit
da25d214b4
  1. 76
      sapl/base/views.py
  2. 2
      sapl/templates/base/RelatorioPresencaSessao_filter.html

76
sapl/base/views.py

@ -1,3 +1,5 @@
from itertools import chain
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
@ -34,10 +36,11 @@ class RelatorioPresencaSessaoView(FilterView):
parlamentares,
total_sessao,
total_ordem):
for p in parlamentares:
p.update({
'porc_sessao': round(p['qtde_sessao'] * 100 / total_sessao, 1),
'porc_ordem': round(p['qtde_ordem'] * 100 / total_ordem, 1)
for p in parlamentares.items():
p[1].update({
'porc_sessao': round(
p[1]['qtde_sessao'] * 100 / total_sessao, 1),
'porc_ordem': round(p[1]['qtde_ordem'] * 100 / total_ordem, 1)
})
return parlamentares
@ -45,51 +48,50 @@ class RelatorioPresencaSessaoView(FilterView):
context = super(RelatorioPresencaSessaoView,
self).get_context_data(**kwargs)
context['title'] = _('Presença dos parlamentares nas sessões')
# ===================================================================
# =====================================================================
# FIXME: Pensar em melhor forma de verificar se formulário está sendo
# submetido.
if 'salvar' in self.request.GET:
if 'data_inicio_0' and 'data_inicio_1' in self.request.GET:
context['periodo'] = (
self.request.GET['data_inicio_0'] +
' - ' + self.request.GET['data_inicio_1'])
parlamentares = []
qs1 = SessaoPlenariaPresenca.objects.filter(
parlamentar__ativo=True,
sessao_plenaria_id__in=context['object_list'])
qs2 = PresencaOrdemDia.objects.filter(
parlamentar__ativo=True,
sessao_plenaria_id__in=context['object_list'])
q = list(chain(list(qs1)+list(qs2)))
parlamentares = {}
total_sessao = 0
total_ordem = 0
for p in Parlamentar.objects.filter(ativo=True):
parlamentar = {}
qtde_sessao = 0
qtde_ordem = 0
for s in context['object_list']:
if SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=s.id,
parlamentar_id=p.id).exists():
qtde_sessao += 1
total_sessao += 1
if PresencaOrdemDia.objects.filter(
sessao_plenaria_id=s.id,
parlamentar_id=p.id).exists():
qtde_ordem += 1
total_ordem += 1
if qtde_sessao >= 1 or qtde_ordem >= 1:
parlamentar = {
'nome': p.nome_parlamentar,
for i in q:
pid = i.parlamentar.id
if not pid in parlamentares:
parlamentares[pid] = {
'nome': i.parlamentar.nome_parlamentar,
'partido': (
p.filiacao_set.first().partido.sigla
if p.filiacao_set.first() else 'Sem Partido'),
'qtde_sessao': qtde_sessao,
'qtde_ordem': qtde_ordem
}
parlamentares.append(parlamentar)
i.parlamentar.filiacao_set.first().partido.sigla
if i.parlamentar.filiacao_set.first()
else 'Sem Partido'),
'qtde_ordem': 0,
'qtde_sessao': 0}
if isinstance(i, SessaoPlenariaPresenca):
parlamentares[pid]['qtde_sessao'] += 1
total_sessao += 1
elif isinstance(i, PresencaOrdemDia):
parlamentares[pid]['qtde_ordem'] += 1
total_ordem += 1
self.calcular_porcentagem_presenca(parlamentares,
total_sessao,
total_ordem)
sorted(parlamentares.items(), key=lambda x: x[1]['nome'])
context['total_ordem'] = total_ordem
context['total_sessao'] = total_sessao
context['parlamentares'] = parlamentares
# ===================================================================
context['periodo'] = (self.request.GET['data_inicio_0'] +
' - ' + self.request.GET['data_inicio_1'])
# =====================================================================
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
return context

2
sapl/templates/base/RelatorioPresencaSessao_filter.html

@ -35,7 +35,7 @@
</tr>
</thead>
<tbody>
{% for p in parlamentares %}
{% for pid, p in parlamentares.items %}
<tr>
<td><b>{{p.nome}}</b> | {{p.partido}}</td>
<td>{{p.qtde_sessao}}</td>

Loading…
Cancel
Save