From 3f196468a9922575f7e21d401f50d02b32c78a3c Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Mon, 16 Apr 2018 16:53:57 -0300 Subject: [PATCH] Fix #1888 (#1890) --- sapl/painel/views.py | 74 ++++++++++--------- .../migrations/0020_auto_20180416_1424.py | 25 +++++++ sapl/sessao/models.py | 4 + sapl/sessao/views.py | 8 +- 4 files changed, 73 insertions(+), 38 deletions(-) create mode 100644 sapl/sessao/migrations/0020_auto_20180416_1424.py diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 474fddcdd..d3f7fc5cc 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -127,44 +127,48 @@ def votante_view(request): 'parlamentar_id', flat=True).distinct() if materia_aberta: - if materia_aberta.tipo_votacao == VOTACAO_NOMINAL: - context.update({'materia': materia_aberta.materia, - 'ementa': materia_aberta.materia.ementa}) - - parlamentar = votante.parlamentar - parlamentar_presente = False - if parlamentar.id in presentes: - parlamentar_presente = True + if not materia_aberta.registro_aberto: + if materia_aberta.tipo_votacao == VOTACAO_NOMINAL: + context.update({'materia': materia_aberta.materia, + 'ementa': materia_aberta.materia.ementa}) + + parlamentar = votante.parlamentar + parlamentar_presente = False + if parlamentar.id in presentes: + parlamentar_presente = True + else: + context.update({'error_message': + 'Não há presentes na Sessão com a ' + 'matéria em votação.'}) + + if parlamentar_presente: + voto = [] + if ordem_dia: + voto = VotoParlamentar.objects.filter( + ordem=ordem_dia) + elif expediente: + voto = VotoParlamentar.objects.filter( + expediente=expediente) + + if voto: + try: + voto = voto.get(parlamentar=parlamentar) + context.update({'voto_parlamentar': voto.voto}) + except ObjectDoesNotExist: + context.update( + {'voto_parlamentar': 'Voto não ' + 'computado.'}) + else: + context.update({'error_message': + 'Você não está presente na ' + 'Ordem do Dia/Expediente em votação.'}) else: - context.update({'error_message': - 'Não há presentes na Sessão com a ' - 'matéria em votação.'}) - - if parlamentar_presente: - voto = [] - if ordem_dia: - voto = VotoParlamentar.objects.filter( - ordem=ordem_dia) - elif expediente: - voto = VotoParlamentar.objects.filter( - expediente=expediente) - - if voto: - try: - voto = voto.get(parlamentar=parlamentar) - context.update({'voto_parlamentar': voto.voto}) - except ObjectDoesNotExist: - context.update( - {'voto_parlamentar': 'Voto não ' - 'computado.'}) - else: - context.update({'error_message': - 'Você não está presente na ' - 'Ordem do Dia/Expediente em votação.'}) + context.update( + {'error_message': 'A matéria aberta não é do tipo ' + 'votação nominal.'}) else: context.update( - {'error_message': 'A matéria aberta não é do tipo ' - 'votação nominal.'}) + {'error_message': 'A votação para esta matéria já encerrou.'}) else: context.update( {'error_message': 'Não há nenhuma matéria aberta.'}) diff --git a/sapl/sessao/migrations/0020_auto_20180416_1424.py b/sapl/sessao/migrations/0020_auto_20180416_1424.py new file mode 100644 index 000000000..3ac142d04 --- /dev/null +++ b/sapl/sessao/migrations/0020_auto_20180416_1424.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.13 on 2018-04-16 17:24 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0019_auto_20180404_1437'), + ] + + operations = [ + migrations.AddField( + model_name='expedientemateria', + name='registro_aberto', + field=models.NullBooleanField(choices=[(True, 'Sim'), (False, 'Não')], verbose_name='Registro de Votação Iniciado?'), + ), + migrations.AddField( + model_name='ordemdia', + name='registro_aberto', + field=models.NullBooleanField(choices=[(True, 'Sim'), (False, 'Não')], verbose_name='Registro de Votação Iniciado?'), + ), + ] diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 23f555cb6..c10d3e03d 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -246,6 +246,10 @@ class AbstractOrdemDia(models.Model): blank=True, choices=YES_NO_CHOICES, verbose_name=_('Votação iniciada?')) + registro_aberto = models.NullBooleanField( + blank=True, + choices=YES_NO_CHOICES, + verbose_name=_('Registro de Votação Iniciado?')) class Meta: abstract = True diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 882b1a215..b876953fe 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -950,6 +950,7 @@ class ListMateriaOrdemDiaView(FormMixin, DetailView): ordem_id = request.POST['ordem_id'] ordem = OrdemDia.objects.get(id=ordem_id) ordem.votacao_aberta = True + ordem.registro_aberto = False ordem.save() return self.get(self, request, args, kwargs) @@ -1710,6 +1711,7 @@ def fechar_votacao_materia(materia): if materia.resultado: materia.resultado = '' materia.votacao_aberta = False + materia.registro_aberto = False materia.save() @@ -1745,7 +1747,7 @@ class VotacaoNominalAbstract(SessaoPermissionMixin): return HttpResponseRedirect(reverse( 'sapl.sessao:ordemdia_list', kwargs={'pk': kwargs['pk']})) - ordem.votacao_aberta = False + ordem.registro_aberto = True ordem.save() elif self.expediente: @@ -1776,8 +1778,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin): 'sapl.sessao:expedientemateria_list', kwargs={'pk': kwargs['pk']})) - expediente.votacao_aberta = False - expediente + expediente.registro_aberto = True + expediente.save() materia = {'materia': materia_votacao.materia, 'ementa': sub(