Browse Source

Fixes #1602

pull/1607/head
Edward Ribeiro 7 years ago
parent
commit
1bb97e7929
  1. 142
      sapl/base/views.py

142
sapl/base/views.py

@ -224,77 +224,77 @@ class RelatorioPresencaSessaoView(FilterView):
return context return context
# ===================================================================== # =====================================================================
if 'salvar' in self.request.GET: # if 'salvar' not in self.request.GET:
where = context['object_list'].query.where where = context['object_list'].query.where
_range = where.children[0].rhs _range = where.children[0].rhs
sufixo = 'sessao_plenaria__data_inicio__range' sufixo = 'sessao_plenaria__data_inicio__range'
param0 = {'%s' % sufixo: _range} param0 = {'%s' % sufixo: _range}
# Parlamentares com Mandato no intervalo de tempo (Ativos) # Parlamentares com Mandato no intervalo de tempo (Ativos)
parlamentares_qs = parlamentares_ativos( parlamentares_qs = parlamentares_ativos(
_range[0], _range[1]).order_by('nome_parlamentar') _range[0], _range[1]).order_by('nome_parlamentar')
parlamentares_id = parlamentares_qs.values_list( parlamentares_id = parlamentares_qs.values_list(
'id', flat=True) 'id', flat=True)
# Presenças de cada Parlamentar em Sessões # Presenças de cada Parlamentar em Sessões
presenca_sessao = SessaoPlenariaPresenca.objects.filter( presenca_sessao = SessaoPlenariaPresenca.objects.filter(
parlamentar_id__in=parlamentares_id, parlamentar_id__in=parlamentares_id,
sessao_plenaria__data_inicio__range=_range).values_list( sessao_plenaria__data_inicio__range=_range).values_list(
'parlamentar_id').annotate( 'parlamentar_id').annotate(
sessao_count=Count('id')) sessao_count=Count('id'))
# Presenças de cada Ordem do Dia # Presenças de cada Ordem do Dia
presenca_ordem = PresencaOrdemDia.objects.filter( presenca_ordem = PresencaOrdemDia.objects.filter(
parlamentar_id__in=parlamentares_id, parlamentar_id__in=parlamentares_id,
sessao_plenaria__data_inicio__range=_range).values_list( sessao_plenaria__data_inicio__range=_range).values_list(
'parlamentar_id').annotate( 'parlamentar_id').annotate(
sessao_count=Count('id')) sessao_count=Count('id'))
total_ordemdia = PresencaOrdemDia.objects.filter( total_ordemdia = PresencaOrdemDia.objects.filter(
**param0).distinct('sessao_plenaria__id').order_by( **param0).distinct('sessao_plenaria__id').order_by(
'sessao_plenaria__id').count() 'sessao_plenaria__id').count()
total_sessao = context['object_list'].count() total_sessao = context['object_list'].count()
# Completa o dicionario as informacoes parlamentar/sessao/ordem # Completa o dicionario as informacoes parlamentar/sessao/ordem
parlamentares_presencas = [] parlamentares_presencas = []
for i, p in enumerate(parlamentares_qs): for i, p in enumerate(parlamentares_qs):
parlamentares_presencas.append({ parlamentares_presencas.append({
'parlamentar': p, 'parlamentar': p,
'sessao_porc': 0, 'sessao_porc': 0,
'ordemdia_porc': 0 'ordemdia_porc': 0
}) })
try: try:
sessao_count = presenca_sessao.get(parlamentar_id=p.id)[1] sessao_count = presenca_sessao.get(parlamentar_id=p.id)[1]
except ObjectDoesNotExist: except ObjectDoesNotExist:
sessao_count = 0 sessao_count = 0
try: try:
ordemdia_count = presenca_ordem.get(parlamentar_id=p.id)[1] ordemdia_count = presenca_ordem.get(parlamentar_id=p.id)[1]
except ObjectDoesNotExist: except ObjectDoesNotExist:
ordemdia_count = 0 ordemdia_count = 0
parlamentares_presencas[i].update({ parlamentares_presencas[i].update({
'sessao_count': sessao_count, 'sessao_count': sessao_count,
'ordemdia_count': ordemdia_count 'ordemdia_count': ordemdia_count
}) })
if total_sessao != 0: if total_sessao != 0:
parlamentares_presencas[i].update( parlamentares_presencas[i].update(
{'sessao_porc': round( {'sessao_porc': round(
sessao_count * 100 / total_sessao, 2)}) sessao_count * 100 / total_sessao, 2)})
if total_ordemdia != 0: if total_ordemdia != 0:
parlamentares_presencas[i].update( parlamentares_presencas[i].update(
{'ordemdia_porc': round( {'ordemdia_porc': round(
ordemdia_count * 100 / total_ordemdia, 2)}) ordemdia_count * 100 / total_ordemdia, 2)})
context['date_range'] = _range context['date_range'] = _range
context['total_ordemdia'] = total_ordemdia context['total_ordemdia'] = total_ordemdia
context['total_sessao'] = context['object_list'].count() context['total_sessao'] = context['object_list'].count()
context['parlamentares'] = parlamentares_presencas context['parlamentares'] = parlamentares_presencas
context['periodo'] = ( context['periodo'] = (
self.request.GET['data_inicio_0'] + self.request.GET['data_inicio_0'] +
' - ' + self.request.GET['data_inicio_1']) ' - ' + 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 ''

Loading…
Cancel
Save