diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 6d10f479f..e076e31db 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -38,23 +38,39 @@ def votacao_aberta(request): Q(expedientemateria__votacao_aberta=True)).distinct() if len(votacoes_abertas) > 1: - msg_abertas = '' - for i, v in enumerate(votacoes_abertas): - if i != 0: - msg_abertas += ', ' - msg_abertas += '''%s''' % ( + msg_abertas = [] + for v in votacoes_abertas: + msg_abertas.append('''
  • %s
  • ''' % ( reverse('sapl.sessao:sessaoplenaria_detail', kwargs={'pk': v.id}), - v.__str__()) + v.__str__())) msg = _('Existe mais de uma votações aberta. Elas se encontram ' - 'nas seguintes Sessões: ' + msg_abertas + '. Para votar, ' - 'peça para que o Operador as feche.') + 'nas seguintes Sessões: ' + ''.join(msg_abertas) + '. ' + 'Para votar, peça para que o Operador feche-as.') messages.add_message(request, messages.INFO, msg) - return HttpResponseRedirect('/') - - else: - return votacoes_abertas.first() + return None, msg + + elif len(votacoes_abertas) == 1: + ordens = OrdemDia.objects.filter( + sessao_plenaria=votacoes_abertas.first(), + votacao_aberta=True) + expedientes = ExpedienteMateria.objects.filter( + sessao_plenaria=votacoes_abertas.first(), + votacao_aberta=True) + + numero_materias_abertas = len(ordens) + len(expedientes) + if numero_materias_abertas > 1: + msg = _('Existe mais de uma votação aberta na Sessão: ' + + ('''
  • %s
  • ''' % ( + reverse('sapl.sessao:sessaoplenaria_detail', + kwargs={'pk': votacoes_abertas.first().id}), + votacoes_abertas.first().__str__())) + + 'Para votar, peça para que o Operador as feche.') + messages.add_message(request, messages.INFO, msg) + return None, msg + + return votacoes_abertas.first(), None def votante_view(request): @@ -71,9 +87,9 @@ def votante_view(request): context.update({'permissao': True}) # Pega sessão - sessao = votacao_aberta(request) + sessao, msg = votacao_aberta(request) - if sessao: + if sessao and not msg: pk = sessao.pk context.update({'sessao_id': pk}) context.update({'sessao': sessao, @@ -92,11 +108,13 @@ def votante_view(request): if ordem_dia: materia_aberta = ordem_dia presentes = PresencaOrdemDia.objects.filter( - sessao_plenaria_id=pk) + sessao_plenaria_id=pk).values_list( + 'parlamentar_id', flat=True).distinct() elif expediente: materia_aberta = expediente presentes = SessaoPlenariaPresenca.objects.filter( - sessao_plenaria_id=pk) + sessao_plenaria_id=pk).values_list( + 'parlamentar_id', flat=True).distinct() if materia_aberta: if materia_aberta.tipo_votacao == VOTACAO_NOMINAL: @@ -105,11 +123,8 @@ def votante_view(request): parlamentar = votante.parlamentar parlamentar_presente = False - if len(presentes) > 0: - for p in presentes: - if p.parlamentar.id == parlamentar.id: - parlamentar_presente = True - break + if parlamentar.id in presentes: + parlamentar_presente = True else: context.update({'error_message': 'Não há presentes na Sessão com a ' @@ -144,6 +159,9 @@ def votante_view(request): context.update( {'error_message': 'Nenhuma matéria aberta.'}) + elif not sessao and msg: + return HttpResponseRedirect('/') + else: context.update( {'error_message': 'Nenhuma sessão com matéria aberta.'}) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 3625c0b3a..7b5981637 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -88,17 +88,15 @@ def verifica_votacoes_abertas(request, model, pk): Q(expedientemateria__votacao_aberta=True)).distinct() if votacoes_abertas: - msg_abertas = '' - for i, v in enumerate(votacoes_abertas): - if i != 0: - msg_abertas += ', ' - msg_abertas += '''%s''' % ( + msg_abertas = [] + for v in votacoes_abertas: + msg_abertas.append('''
  • %s
  • ''' % ( reverse('sapl.sessao:sessaoplenaria_detail', kwargs={'pk': v.id}), - v.__str__()) + v.__str__())) msg = _('Já existem votações abertas nas seguintes Sessões: ' + - msg_abertas + '. Para abrir ' + ''.join(msg_abertas) + '. Para abrir ' 'outra, termine ou feche as votações abertas.') messages.add_message(request, messages.INFO, msg) diff --git a/sapl/templates/sessao/sessaoplenaria_detail.html b/sapl/templates/sessao/sessaoplenaria_detail.html deleted file mode 100644 index bd6c66ab4..000000000 --- a/sapl/templates/sessao/sessaoplenaria_detail.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} - - -{% block extra_actions %} -{% if 'parlamentares.can_vote' in request.user.get_all_permissions %} -
    - - Votar Matéria - -
    -{% endif %} -{% endblock extra_actions %}