From 2ae3988b064bbdc3b01b856389d2d029cbf16429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Matheus?= Date: Thu, 13 Jun 2019 18:29:07 -0300 Subject: [PATCH] Fix #2836 --- sapl/sessao/forms.py | 12 ++-- sapl/sessao/views.py | 72 +++++++++++++++---- sapl/templates/sessao/votacao/votacao.html | 10 +-- .../votacao/votacao_simbolica_bloco.html | 7 +- 4 files changed, 78 insertions(+), 23 deletions(-) diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 523e1cede..9b3fc1f90 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -464,6 +464,9 @@ class VotacaoForm(forms.Form): abstencoes = forms.IntegerField(label='Abstenções') total_presentes = forms.IntegerField( required=False, widget=forms.HiddenInput()) + total_votantes = forms.IntegerField( + required=False, widget=forms.HiddenInput() + ) voto_presidente = forms.IntegerField( label='A totalização inclui o voto do Presidente?') total_votos = forms.IntegerField(required=False, label='total') @@ -479,15 +482,16 @@ class VotacaoForm(forms.Form): votos_nao = cleaned_data['votos_nao'] abstencoes = cleaned_data['abstencoes'] qtde_presentes = cleaned_data['total_presentes'] + qtde_votantes = cleaned_data['total_votantes'] qtde_votos = votos_sim + votos_nao + abstencoes voto_presidente = cleaned_data['voto_presidente'] - if qtde_presentes and not voto_presidente: - qtde_presentes -= 1 + if qtde_votantes and not voto_presidente: + qtde_votantes -= 1 - if qtde_presentes and qtde_votos != qtde_presentes: + if qtde_votantes and qtde_votos != qtde_votantes: raise ValidationError( - 'O total de votos não corresponde com a quantidade de presentes!') + 'O total de votos não corresponde com a quantidade de votantes!') return cleaned_data diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index f76d1efb8..8380247cf 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -3620,17 +3620,41 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie if request.POST['origem'] == 'ordem': ordens = OrdemDia.objects.filter( id__in=request.POST.getlist('marcadas_1')) - qtde_presentes = PresencaOrdemDia.objects.filter( - sessao_plenaria_id=self.kwargs['pk']).count() + + presentes_id = [ + presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( + sessao_plenaria_id=self.kwargs['pk'] + ) + ] + qtde_presentes = len(presentes_id) + + presenca_ativos = Parlamentar.objects.filter( + id__in=presentes_id, ativo=True + ) + qtde_ativos = len(presenca_ativos) + context.update({'ordens': ordens, - 'total_presentes': qtde_presentes}) + 'total_presentes': qtde_presentes, + 'total_votantes': qtde_ativos}) else: expedientes = ExpedienteMateria.objects.filter( id__in=request.POST.getlist('marcadas_1')) - qtde_presentes = SessaoPlenariaPresenca.objects.filter( - sessao_plenaria_id=self.kwargs['pk']).count() + + presentes_id = [ + presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( + sessao_plenaria_id=self.kwargs['pk'] + ) + ] + qtde_presentes = len(presentes_id) + + presenca_ativos = Parlamentar.objects.filter( + id__in=presentes_id, ativo=True + ) + qtde_ativos = len(presenca_ativos) + context.update({'expedientes': expedientes, - 'total_presentes': qtde_presentes}) + 'total_presentes': qtde_presentes, + 'total_votantes': qtde_ativos}) if 'salvar-votacao' in request.POST: form = VotacaoForm(request.POST) @@ -3755,17 +3779,41 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie if self.request.POST['origem'] == 'ordem': ordens = OrdemDia.objects.filter( id__in=self.request.POST.getlist('ordens')) - qtde_presentes = PresencaOrdemDia.objects.filter( - sessao_plenaria_id=self.kwargs['pk']).count() + + presentes_id = [ + presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( + sessao_plenaria_id=self.kwargs['pk'] + ) + ] + qtde_presentes = len(presentes_id) + + presenca_ativos = Parlamentar.objects.filter( + id__in=presentes_id, ativo=True + ) + qtde_ativos = len(presenca_ativos) + context.update({'ordens': ordens, - 'total_presentes': qtde_presentes}) + 'total_presentes': qtde_presentes, + 'total_votantes': qtde_ativos}) elif self.request.POST['origem'] == 'expediente': expedientes = ExpedienteMateria.objects.filter( id__in=self.request.POST.getlist('expedientes')) - qtde_presentes = SessaoPlenariaPresenca.objects.filter( - sessao_plenaria_id=self.kwargs['pk']).count() + + presentes_id = [ + presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( + sessao_plenaria_id=self.kwargs['pk'] + ) + ] + qtde_presentes = len(presentes_id) + + presenca_ativos = Parlamentar.objects.filter( + id__in=presentes_id, ativo=True + ) + qtde_ativos = len(presenca_ativos) + context.update({'expedientes': expedientes, - 'total_presentes': qtde_presentes}) + 'total_presentes': qtde_presentes, + 'total_votantes': qtde_ativos}) context.update({'resultado_votacao': TipoResultadoVotacao.objects.all(), 'form': form, diff --git a/sapl/templates/sessao/votacao/votacao.html b/sapl/templates/sessao/votacao/votacao.html index 323beb060..d7320c5b1 100644 --- a/sapl/templates/sessao/votacao/votacao.html +++ b/sapl/templates/sessao/votacao/votacao.html @@ -39,14 +39,14 @@
-
Sim:
-
Não:
-
Abstenções:
+
Sim*:
+
Não*:
+
Abstenções*:
- A totalização inclui o voto do Presidente? + A totalização inclui o voto do Presidente?* {% for tipo in view.get_tipos_votacao %} diff --git a/sapl/templates/sessao/votacao/votacao_simbolica_bloco.html b/sapl/templates/sessao/votacao/votacao_simbolica_bloco.html index b3cfb9a62..d53a4c4d8 100644 --- a/sapl/templates/sessao/votacao/votacao_simbolica_bloco.html +++ b/sapl/templates/sessao/votacao/votacao_simbolica_bloco.html @@ -8,9 +8,9 @@
Votação Simbólica {% if ordens or expedientes %} - {% if total_presentes == 0 %} + {% if total_votantes == 0 %} {% if origem == 'ordem' %} Voltar @@ -36,7 +36,10 @@ {% endfor %} {% endif %} Total presentes: {{total_presentes}} (com presidente) +
+ Total votantes: {{total_votantes}} (com presidente) +