diff --git a/sapl/base/views.py b/sapl/base/views.py index 05245b6a6..91b1523bf 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -523,32 +523,28 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): # Parlamentares com Mandato no intervalo de tempo (Ativos) - parlamentares_qs = parlamentares_ativos( - _range[0], _range[1]).order_by('nome_parlamentar') - parlamentares_id = parlamentares_qs.values_list( - 'id', flat=True) + parlamentares_qs = parlamentares_ativos(_range[0], _range[1]).order_by('nome_parlamentar') + parlamentares_id = parlamentares_qs.values_list('id', flat=True) # Presenças de cada Parlamentar em Sessões - presenca_sessao = SessaoPlenariaPresenca.objects.filter(**param0).values_list( - 'parlamentar_id').annotate( - sessao_count=Count('id')) + presenca_sessao = SessaoPlenariaPresenca.objects.filter(**param0).values_list('parlamentar_id').annotate(sessao_count=Count('id')) # Presenças de cada Ordem do Dia - presenca_ordem = PresencaOrdemDia.objects.filter(**param0).values_list( - 'parlamentar_id').annotate( - sessao_count=Count('id')) + presenca_ordem = PresencaOrdemDia.objects.filter(**param0).values_list('parlamentar_id').annotate(sessao_count=Count('id')) - total_ordemdia = PresencaOrdemDia.objects.filter( - **param0).distinct('sessao_plenaria__id').order_by( - 'sessao_plenaria__id').count() + total_ordemdia = PresencaOrdemDia.objects.filter(**param0).distinct('sessao_plenaria__id').order_by('sessao_plenaria__id').count() total_sessao = context['object_list'].count() username = self.request.user.username + context['exibir_somente_titular'] = self.request.GET.get('exibir_somente_titular') == 'on' + context['exibir_somente_ativo'] = self.request.GET.get('exibir_somente_ativo') == 'on' + # Completa o dicionario as informacoes parlamentar/sessao/ordem parlamentares_presencas = [] - for i, p in enumerate(parlamentares_qs): + for p in parlamentares_qs: + parlamentar = {} m = p.mandato_set.filter(Q(data_inicio_mandato__lte=_range[0], data_fim_mandato__gte=_range[1]) | Q(data_inicio_mandato__lte=_range[0], data_fim_mandato__isnull=True) | Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1]) | @@ -556,43 +552,72 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1])) m = m.last() - parlamentares_presencas.append({ - 'parlamentar': p, - 'titular': m.titular if m else False, - 'sessao_porc': 0, - 'ordemdia_porc': 0 - }) + + if not context['exibir_somente_titular'] and not context['exibir_somente_ativo']: + parlamentar = { + 'parlamentar': p, + 'titular': m.titular if m else False, + 'sessao_porc': 0, + 'ordemdia_porc': 0 + } + elif context['exibir_somente_titular'] and not context['exibir_somente_ativo']: + if m and m.titular: + parlamentar = { + 'parlamentar': p, + 'titular': m.titular if m else False, + 'sessao_porc': 0, + 'ordemdia_porc': 0 + } + else: + continue + elif not context['exibir_somente_titular'] and context['exibir_somente_ativo']: + if p.ativo: + parlamentar = { + 'parlamentar': p, + 'titular': m.titular if m else False, + 'sessao_porc': 0, + 'ordemdia_porc': 0 + } + else: + continue + elif context['exibir_somente_titular'] and context['exibir_somente_ativo']: + if m and m.titular and p.ativo: + parlamentar = { + 'parlamentar': p, + 'titular': m.titular if m else False, + 'sessao_porc': 0, + 'ordemdia_porc': 0 + } + else: + continue + else: + continue + try: - self.logger.debug( - 'user=' + username + '. Tentando obter presença do parlamentar (pk={}).'.format(p.id)) + self.logger.debug(F'user={username}. Tentando obter presença do parlamentar (pk={p.id}).') sessao_count = presenca_sessao.get(parlamentar_id=p.id)[1] except ObjectDoesNotExist as e: - self.logger.error( - 'user=' + username + '. Erro ao obter presença do parlamentar (pk={}). Definido como 0. '.format(p.id) + str(e)) + self.logger.error(F'user={username}. Erro ao obter presença do parlamentar (pk={p.id}). Definido como 0. {str(e)}') sessao_count = 0 try: # Presenças de cada Ordem do Dia - self.logger.info( - 'user=' + username + '. Tentando obter PresencaOrdemDia para o parlamentar pk={}.'.format(p.id)) + self.logger.info(F'user={username}. Tentando obter PresencaOrdemDia para o parlamentar pk={p.id}.') ordemdia_count = presenca_ordem.get(parlamentar_id=p.id)[1] except ObjectDoesNotExist: - self.logger.error('user=' + username + '. Erro ao obter PresencaOrdemDia para o parlamentar pk={}. ' - 'Definido como 0.'.format(p.id)) + self.logger.error(F'user={username}. Erro ao obter PresencaOrdemDia para o parlamentar pk={p.id}. Definido como 0.') ordemdia_count = 0 - parlamentares_presencas[i].update({ + parlamentar.update({ 'sessao_count': sessao_count, 'ordemdia_count': ordemdia_count }) if total_sessao != 0: - parlamentares_presencas[i].update( - {'sessao_porc': round( - sessao_count * 100 / total_sessao, 2)}) + parlamentar.update({'sessao_porc': round(sessao_count * 100 / total_sessao, 2)}) if total_ordemdia != 0: - parlamentares_presencas[i].update( - {'ordemdia_porc': round( - ordemdia_count * 100 / total_ordemdia, 2)}) + parlamentar.update({'ordemdia_porc': round(ordemdia_count * 100 / total_ordemdia, 2)}) + + parlamentares_presencas.append(parlamentar) context['date_range'] = _range context['total_ordemdia'] = total_ordemdia @@ -602,8 +627,6 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): context['sessao_legislativa'] = '' context['legislatura'] = '' context['exibir_ordem'] = self.request.GET.get('exibir_ordem_dia') == 'on' - context['exibir_somente_titular'] = self.request.GET.get('exibir_somente_titular') == 'on' - context['exibir_somente_ativo'] = self.request.GET.get('exibir_somente_ativo') == 'on' if sessao_legislativa_pk: context['sessao_legislativa'] = SessaoLegislativa.objects.get(id=sessao_legislativa_pk) diff --git a/sapl/templates/base/RelatorioPresencaSessao_filter.html b/sapl/templates/base/RelatorioPresencaSessao_filter.html index 5b4b59513..9688ab33f 100644 --- a/sapl/templates/base/RelatorioPresencaSessao_filter.html +++ b/sapl/templates/base/RelatorioPresencaSessao_filter.html @@ -45,19 +45,17 @@
{% for p in parlamentares %} - {% if not exibir_somente_titular or p.titular %} -