Browse Source

Adiciona coluna de justificativa de ausência

tela-config-relatorio
Edward Ribeiro 2 years ago
parent
commit
a85080891f
  1. 3
      sapl/base/views.py
  2. 29
      sapl/relatorios/views.py
  3. 2
      sapl/templates/relatorios/RelatorioPresencaSessao_filter.html

3
sapl/base/views.py

@ -47,8 +47,7 @@ from sapl.parlamentares.models import (
Filiacao, Legislatura, Mandato, Parlamentar) Filiacao, Legislatura, Mandato, Parlamentar)
from sapl.protocoloadm.models import (Anexado, Protocolo) from sapl.protocoloadm.models import (Anexado, Protocolo)
from sapl.relatorios.views import (relatorio_estatisticas_acesso_normas) from sapl.relatorios.views import (relatorio_estatisticas_acesso_normas)
from sapl.sessao.models import ( from sapl.sessao.models import (Bancada, SessaoPlenaria)
Bancada, SessaoPlenaria)
from sapl.settings import EMAIL_SEND_USER from sapl.settings import EMAIL_SEND_USER
from sapl.utils import (gerar_hash_arquivo, intervalos_tem_intersecao, mail_service_configured, 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, SEPARADOR_HASH_PROPOSICAO, show_results_filter_set, google_recaptcha_configured, sapl_as_sapn,

29
sapl/relatorios/views.py

@ -1928,6 +1928,11 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView):
presenca_ordem = PresencaOrdemDia.objects.filter( presenca_ordem = PresencaOrdemDia.objects.filter(
**param0).values_list('parlamentar_id').annotate(sessao_count=Count('id')) **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( total_ordemdia = PresencaOrdemDia.objects.filter(
**param0).distinct('sessao_plenaria__id').order_by('sessao_plenaria__id').count() **param0).distinct('sessao_plenaria__id').order_by('sessao_plenaria__id').count()
@ -2009,10 +2014,32 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView):
self.logger.error( self.logger.error(
F'user={username}. Erro ao obter PresencaOrdemDia para o parlamentar pk={p.id}. Definido como 0.') F'user={username}. Erro ao obter PresencaOrdemDia para o parlamentar pk={p.id}. Definido como 0.')
ordemdia_count = 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({ parlamentar.update({
'sessao_count': sessao_count, '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: if total_sessao != 0:

2
sapl/templates/relatorios/RelatorioPresencaSessao_filter.html

@ -33,6 +33,7 @@
<th rowspan="2">Ativo?</th> <th rowspan="2">Ativo?</th>
<th colspan="2">Sessão</th> <th colspan="2">Sessão</th>
{% if exibir_ordem %} <th colspan="2">Ordem do Dia</th> {% endif %} {% if exibir_ordem %} <th colspan="2">Ordem do Dia</th> {% endif %}
<th rowspan="2">Ausências Justificadas em Sessão</th>
</tr> </tr>
<tr class="active"> <tr class="active">
<th>(Qtd)</th> <th>(Qtd)</th>
@ -55,6 +56,7 @@
<td>{{p.ordemdia_count}}</td> <td>{{p.ordemdia_count}}</td>
<td>{{p.ordemdia_porc}}</td> <td>{{p.ordemdia_porc}}</td>
{% endif %} {% endif %}
<td>{{p.ausencia_justificada_count}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

Loading…
Cancel
Save