Browse Source

Melhora query

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

72
sapl/base/views.py

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

2
sapl/templates/base/RelatorioPresencaSessao_filter.html

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

Loading…
Cancel
Save