From ad12851815c9cbe5966ed835f3234d7407c79dbf Mon Sep 17 00:00:00 2001 From: Michel de Almeida Silva Date: Wed, 10 Sep 2025 11:55:42 -0300 Subject: [PATCH] =?UTF-8?q?fix(sessao):=20preserva=20votos=20e=20mant?= =?UTF-8?q?=C3=A9m=20edi=C3=A7=C3=A3o=20ap=C3=B3s=20erro=20na=20vota=C3=A7?= =?UTF-8?q?=C3=A3o=20nominal=20(#2985)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reconstrói 'parlamentares' a partir dos votos enviados no POST em form_invalid da VotacaoEmBlocoNominalView, preservando as marcações quando a validação falhar (ex.: resultado da votação ausente). - Adiciona flag 'votos_from_post' no contexto e ajusta o template para não desabilitar o select/gerar input hidden quando os votos vierem do POST, permitindo correção antes de reenviar. closes #2985 --- sapl/sessao/views.py | 21 +++++++++++++++++-- .../sessao/votacao/votacao_nominal_bloco.html | 4 ++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 4835a17b6..cbeeeb956 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -5068,11 +5068,28 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView) context.update({'expedientes': expedientes}) total_presentes = presentes.count() - context.update({'parlamentares': self.get_parlamentares(), + + # Preserva votos selecionados pelo usuário ao retornar com erro + presentes_list = [p.parlamentar for p in presentes] + votos_post = {} + for votos in self.request.POST.getlist('voto_parlamentar'): + try: + voto, parlamentar_id = votos.split(':', 1) + votos_post[int(parlamentar_id)] = voto + except ValueError: + continue + + parlamentares_ctx = [] + for parlamentar in Parlamentar.objects.filter(ativo=True): + if parlamentar in presentes_list: + parlamentares_ctx.append([parlamentar, votos_post.get(parlamentar.id)]) + + context.update({'parlamentares': parlamentares_ctx, 'total_presentes': total_presentes, 'resultado_votacao': TipoResultadoVotacao.objects.all(), 'form': form, - 'origem': self.request.POST['origem']}) + 'origem': self.request.POST['origem'], + 'votos_from_post': True}) return self.render_to_response(context) diff --git a/sapl/templates/sessao/votacao/votacao_nominal_bloco.html b/sapl/templates/sessao/votacao/votacao_nominal_bloco.html index fe558fcc7..e70556b89 100644 --- a/sapl/templates/sessao/votacao/votacao_nominal_bloco.html +++ b/sapl/templates/sessao/votacao/votacao_nominal_bloco.html @@ -47,8 +47,8 @@ {% for parlamentar in parlamentares %}
{{parlamentar.0.nome_parlamentar}}
- {% if parlamentar.1 %} {% endif %} - {% endif %} +