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 %}
-
-{% endif %}
-{% endblock extra_actions %}