From a85080891ff3b8d95f056fe5b4a39f2f4def7bba Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Wed, 28 Jun 2023 18:34:48 -0700 Subject: [PATCH] =?UTF-8?q?Adiciona=20coluna=20de=20justificativa=20de=20a?= =?UTF-8?q?us=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/views.py | 3 +- sapl/relatorios/views.py | 29 ++++++++++++++++++- .../RelatorioPresencaSessao_filter.html | 2 ++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/sapl/base/views.py b/sapl/base/views.py index 197a813f8..dd8f7ef27 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -47,8 +47,7 @@ from sapl.parlamentares.models import ( Filiacao, Legislatura, Mandato, Parlamentar) from sapl.protocoloadm.models import (Anexado, Protocolo) from sapl.relatorios.views import (relatorio_estatisticas_acesso_normas) -from sapl.sessao.models import ( - Bancada, SessaoPlenaria) +from sapl.sessao.models import (Bancada, SessaoPlenaria) from sapl.settings import EMAIL_SEND_USER from sapl.utils import (gerar_hash_arquivo, intervalos_tem_intersecao, mail_service_configured, SEPARADOR_HASH_PROPOSICAO, show_results_filter_set, google_recaptcha_configured, sapl_as_sapn, diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 436bc40b1..a0c8addd6 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1928,6 +1928,11 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): presenca_ordem = PresencaOrdemDia.objects.filter( **param0).values_list('parlamentar_id').annotate(sessao_count=Count('id')) + # Ausencias justificadas + ausencia_justificadas = JustificativaAusencia.objects.filter( + **param0, ausencia=2).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() @@ -2009,10 +2014,32 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): self.logger.error( F'user={username}. Erro ao obter PresencaOrdemDia para o parlamentar pk={p.id}. Definido como 0.') ordemdia_count = 0 + try: + self.logger.debug( + F'user={username}. Tentando obter ausência justificada do parlamentar (pk={p.id}).') + ausencia_justificadas_count = ausencia_justificadas.get(parlamentar_id=p.id)[1] + except ObjectDoesNotExist as e: + self.logger.error( + F'user={username}. Erro ao obter ausência do parlamentar (pk={p.id}). Definido como 0. {str(e)}') + ausencia_justificadas_count = 0 + + ausencia_count = total_sessao - sessao_count if total_sessao else 0 + ausencia_porc = round(100 * (1 - sessao_count / total_sessao), 2) if total_sessao else 0 + # # porcentagem do total de ausencias + # ausencia_justificadas_porc = round(100 * ausencias_justificadas_count / ausencia_count, 2)\ + # if ausencia_count else 0 + + # porcentagem do total de sessoes + ausencia_justificadas_porc = round(100 * ausencia_justificadas_count / total_sessao, 2) \ + if total_sessao else 0 parlamentar.update({ 'sessao_count': sessao_count, - 'ordemdia_count': ordemdia_count + 'ordemdia_count': ordemdia_count, + 'ausencia_count': ausencia_count, + 'ausencia_porc': ausencia_porc, + 'ausencia_justificada_count': ausencia_justificadas_count, + 'ausencia_justificadas_porc': ausencia_justificadas_porc, }) if total_sessao != 0: diff --git a/sapl/templates/relatorios/RelatorioPresencaSessao_filter.html b/sapl/templates/relatorios/RelatorioPresencaSessao_filter.html index 3d4b2e785..5813646c6 100644 --- a/sapl/templates/relatorios/RelatorioPresencaSessao_filter.html +++ b/sapl/templates/relatorios/RelatorioPresencaSessao_filter.html @@ -33,6 +33,7 @@ Ativo? Sessão {% if exibir_ordem %} Ordem do Dia {% endif %} + Ausências Justificadas em Sessão (Qtd) @@ -55,6 +56,7 @@ {{p.ordemdia_count}} {{p.ordemdia_porc}} {% endif %} + {{p.ausencia_justificada_count}} {% endfor %}