diff --git a/sapl/__init__.py b/sapl/__init__.py
index e69de29bb..cd0426407 100644
--- a/sapl/__init__.py
+++ b/sapl/__init__.py
@@ -0,0 +1,3 @@
+from .celery import app as celery_app
+
+__all__ = ['celery_app']
diff --git a/sapl/painel/views.py b/sapl/painel/views.py
index 6718683cd..ed390f95b 100644
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -78,9 +78,9 @@ def votacao_aberta(request):
if numero_materias_abertas > 1:
logger.info('user=' + username + '. 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__())))
+ reverse('sapl.sessao:sessaoplenaria_detail',
+ kwargs={'pk': votacoes_abertas.first().id}),
+ votacoes_abertas.first().__str__())))
msg = _('Existe mais de uma votação aberta na Sessão: ' +
('''%s''' % (
reverse('sapl.sessao:sessaoplenaria_detail',
@@ -93,7 +93,7 @@ def votacao_aberta(request):
return votacoes_abertas.first(), None
-def votacao(context,context_vars):
+def votacao(context, context_vars):
logger = logging.getLogger(__name__)
parlamentar = context_vars['votante'].parlamentar
parlamentar_presente = False
@@ -116,23 +116,26 @@ def votacao(context,context_vars):
if voto:
try:
- logger.debug("Tentando obter objeto VotoParlamentar com parlamentar={}.".format(context_vars['parlamentar']))
+ logger.debug("Tentando obter objeto VotoParlamentar com parlamentar={}.".format(
+ context_vars['parlamentar']))
voto = voto.get(parlamentar=context_vars['parlamentar'])
context.update({'voto_parlamentar': voto.voto})
except ObjectDoesNotExist:
- logger.error("Voto do parlamentar {} não computado.".format(context_vars['parlamentar']))
+ logger.error("Voto do parlamentar {} não computado.".format(
+ context_vars['parlamentar']))
context.update(
{'voto_parlamentar': 'Voto não '
'computado.'})
else:
logger.error("Parlamentar com id={} não está presente na "
- "Ordem do Dia/Expediente em votação.".format(parlamentar.id))
+ "Ordem do Dia/Expediente em votação.".format(parlamentar.id))
context.update({'error_message':
'Você não está presente na '
'Ordem do Dia/Expediente em votação.'})
return context, context_vars
-def sessao_votacao(context,context_vars):
+
+def sessao_votacao(context, context_vars):
pk = context_vars['sessao'].pk
context.update({'sessao_id': pk})
context.update({'sessao': context_vars['sessao'],
@@ -143,9 +146,9 @@ def sessao_votacao(context,context_vars):
presentes = []
ordem_dia = get_materia_aberta(pk)
expediente = get_materia_expediente_aberta(pk)
- errors_msgs = {'materia':'Não há nenhuma matéria aberta.',
- 'registro':'A votação para esta matéria já encerrou.',
- 'tipo':'A matéria aberta não é do tipo votação nominal.'}
+ errors_msgs = {'materia': 'Não há nenhuma matéria aberta.',
+ 'registro': 'A votação para esta matéria já encerrou.',
+ 'tipo': 'A matéria aberta não é do tipo votação nominal.'}
materia_aberta = None
if ordem_dia:
@@ -160,8 +163,8 @@ def sessao_votacao(context,context_vars):
'parlamentar_id', flat=True).distinct()
context_vars.update({'ordem_dia': ordem_dia,
- 'expediente':expediente,
- 'presentes': presentes})
+ 'expediente': expediente,
+ 'presentes': presentes})
# Verifica votação aberta
# Se aberta, verifica se é nominal. ID nominal == 2
@@ -188,7 +191,7 @@ def can_vote(context, context_vars, request):
# Pega sessão
sessao, msg = votacao_aberta(request)
- context_vars.update({'sessao':sessao})
+ context_vars.update({'sessao': sessao})
if sessao and not msg:
context, context_vars = sessao_votacao(context, context_vars)
elif not sessao and msg:
@@ -202,20 +205,21 @@ def can_vote(context, context_vars, request):
def votante_view(request):
logger = logging.getLogger(__name__)
username = request.user.username if request.user.is_authenticated else 'AnonymousUser'
-
+
# Pega o votante relacionado ao usuário
template_name = 'painel/voto_nominal.html'
context = {}
context_vars = {}
try:
- logger.debug(f'user={username}. Tentando obter objeto Votante com user={request.user}.')
+ logger.debug(
+ f'user={username}. Tentando obter objeto Votante com user={request.user}.')
if not request.user.is_anonymous and request.user.is_authenticated:
votante = Votante.objects.get(user=request.user)
else:
raise ObjectDoesNotExist
except ObjectDoesNotExist:
- logger.error(f"user={username}. Usuário (user={request.user}) não cadastrado como votante na tela de parlamentares. "
+ logger.error(f"user={username}. Usuário (user={request.user}) não cadastrado como votante na tela de parlamentares. "
"Contate a administração de sua Casa Legislativa!")
msg = _("Usuário não cadastrado como votante na tela de parlamentares. Contate a administração de sua Casa Legislativa!")
context.update({'error_message': msg})
@@ -227,9 +231,11 @@ def votante_view(request):
# Verifica se usuário possui permissão para votar
if 'parlamentares.can_vote' in request.user.get_all_permissions():
context, context_vars = can_vote(context, context_vars, request)
- logger.debug("user=" + username + ". Verificando se usuário {} possui permissão para votar.".format(request.user))
+ logger.debug("user=" + username +
+ ". Verificando se usuário {} possui permissão para votar.".format(request.user))
else:
- logger.error("user=" + username + ". Usuário {} sem permissão para votar.".format(request.user))
+ logger.error("user=" + username +
+ ". Usuário {} sem permissão para votar.".format(request.user))
context.update({'permissao': False,
'error_message': 'Usuário sem permissão para votar.'})
@@ -294,7 +300,8 @@ def painel_view(request, pk):
now = timezone.localtime(timezone.now())
utc_offset = now.utcoffset().total_seconds() / 60
- context = {'head_title': str(_('Painel Plenário')), 'sessao_id': pk, 'utc_offset': utc_offset }
+ context = {'head_title': str(
+ _('Painel Plenário')), 'sessao_id': pk, 'utc_offset': utc_offset}
return render(request, 'painel/index.html', context)
@@ -348,10 +355,12 @@ def get_cronometro_status(request, name):
logger.debug("user=" + username + ". Tentando obter cronometro.")
cronometro = request.session[name]
except KeyError as e:
- logger.error("user=" + username + ". Erro ao obter cronometro. Retornado como vazio. " + str(e))
+ logger.error("user=" + username +
+ ". Erro ao obter cronometro. Retornado como vazio. " + str(e))
cronometro = ''
return cronometro
+
def get_cronometro_value(request, name):
if name == 'discurso':
result = ConfiguracoesAplicacao.objects.first().cronometro_discurso
@@ -377,7 +386,7 @@ def get_presentes(pk, response, materia):
else:
presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=pk)
-
+
sessao = SessaoPlenaria.objects.get(id=pk)
num_presentes = len(presentes)
data_sessao = sessao.data_inicio
@@ -503,7 +512,8 @@ def get_votos(response, materia):
for i, p in enumerate(response['presentes']):
try:
- logger.info("Tentando obter votos do parlamentar (id={}).".format(p['parlamentar_id']))
+ logger.info("Tentando obter votos do parlamentar (id={}).".format(
+ p['parlamentar_id']))
if votos_parlamentares.get(parlamentar_id=p['parlamentar_id']).voto:
response['presentes'][i]['voto'] = 'Voto Informado'
except ObjectDoesNotExist:
@@ -531,11 +541,13 @@ def get_votos(response, materia):
for i, p in enumerate(response['presentes']):
try:
- logger.debug("Tentando obter votos do parlamentar (id={}).".format(p['parlamentar_id']))
+ logger.debug("Tentando obter votos do parlamentar (id={}).".format(
+ p['parlamentar_id']))
response['presentes'][i]['voto'] = votos_parlamentares.get(
parlamentar_id=p['parlamentar_id']).voto
except ObjectDoesNotExist:
- logger.error("Votos do parlamentar (id={}) não encontrados. Retornado None.".format(p['parlamentar_id']))
+ logger.error("Votos do parlamentar (id={}) não encontrados. Retornado None.".format(
+ p['parlamentar_id']))
response['presentes'][i]['voto'] = None
response.update({
@@ -562,7 +574,7 @@ def get_dados_painel(request, pk):
if casa and app_config and (bool(casa.logotipo)):
brasao = casa.logotipo.url \
if app_config.mostrar_brasao_painel else None
-
+
response = {
'sessao_plenaria': str(sessao),
'sessao_plenaria_data': sessao.data_inicio.strftime('%d/%m/%Y'),
@@ -570,6 +582,7 @@ def get_dados_painel(request, pk):
'sessao_solene': sessao.tipo.nome == "Solene",
'sessao_finalizada': sessao.finalizada,
'tema_solene': sessao.tema_solene,
+ 'status_cronometro_discurso': get_cronometro_status(request, 'discurso'),
'cronometro_aparte': get_cronometro_value(request, 'aparte'),
'cronometro_discurso': get_cronometro_value(request, 'discurso'),
'cronometro_ordem': get_cronometro_value(request, 'ordem'),
@@ -611,18 +624,18 @@ def get_dados_painel(request, pk):
ordem_expediente = last_ordem_voto.ordem
ultimo_timestamp = last_ordem_voto.data_hora
if (last_expediente_voto and ultimo_timestamp and last_expediente_voto.data_hora > ultimo_timestamp) or \
- (not ultimo_timestamp and last_expediente_voto):
+ (not ultimo_timestamp and last_expediente_voto):
ordem_expediente = last_expediente_voto.expediente
ultimo_timestamp = last_expediente_voto.data_hora
if (last_ordem_leitura and ultimo_timestamp and last_ordem_leitura.data_hora > ultimo_timestamp) or \
- (not ultimo_timestamp and last_ordem_leitura):
+ (not ultimo_timestamp and last_ordem_leitura):
ordem_expediente = last_ordem_leitura.ordem
ultimo_timestamp = last_ordem_leitura.data_hora
if (last_expediente_leitura and ultimo_timestamp and last_expediente_leitura.data_hora > ultimo_timestamp) or \
- (not ultimo_timestamp and last_expediente_leitura):
+ (not ultimo_timestamp and last_expediente_leitura):
ordem_expediente = last_expediente_leitura.expediente
ultimo_timestamp = last_expediente_leitura.data_hora
-
+
if ordem_expediente:
return JsonResponse(get_votos(
get_presentes(pk, response, ordem_expediente),
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index 5284bb591..485c5533f 100755
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -2,6 +2,7 @@
import logging
from collections import OrderedDict
from re import sub
+from sapl.painel.views import get_cronometro_status
from django.contrib import messages
from django.contrib.auth.decorators import permission_required
@@ -308,7 +309,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
page_number = ""
if 'page' in context:
#url += "?page={}".format(context['page'])
- page_number = "" % context['page']
+ page_number = "" % context[
+ 'page']
if has_permission:
if obj.tipo_votacao != LEITURA:
@@ -649,7 +651,7 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView):
numero_ordem = exp.last().numero_ordem if exp.exists() else 0
for num_ordem, expediente in enumerate(
ExpedienteMateria.objects.filter(id__in=marcadas),
- numero_ordem+1
+ numero_ordem + 1
):
lista_expediente.append(
ExpedienteMateria(
@@ -669,7 +671,7 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView):
o = OrdemDia.objects.filter(sessao_plenaria=sessao)
numero_ordem = o.last().numero_ordem if o.exists() else 0
for num_ordem, ordemdia in enumerate(
- OrdemDia.objects.filter(id__in=marcadas), numero_ordem+1
+ OrdemDia.objects.filter(id__in=marcadas), numero_ordem + 1
):
lista_ordemdia.append(
OrdemDia(
@@ -945,7 +947,8 @@ class OradorCrud(MasterDetailCrud):
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
ultimo_orador = Orador.objects.filter(
sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first()
- context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0
+ context[
+ "ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0
return context
def get_success_url(self):
@@ -1018,7 +1021,8 @@ class OradorExpedienteCrud(OradorCrud):
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
ultimo_orador = OradorExpediente.objects.filter(
sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first()
- context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0
+ context[
+ "ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0
return context
def get_success_url(self):
@@ -1098,7 +1102,8 @@ class OradorOrdemDiaCrud(OradorCrud):
context = super().get_context_data(**kwargs)
ultimo_orador = OradorOrdemDia.objects.filter(
sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first()
- context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0
+ context[
+ "ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0
return context
class UpdateView(MasterDetailCrud.UpdateView):
@@ -2936,7 +2941,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
elif self.expediente:
votacao.expediente_id = expediente_id
- votacao.tipo_resultado_votacao = form.cleaned_data['resultado_votacao']
+ votacao.tipo_resultado_votacao = form.cleaned_data[
+ 'resultado_votacao']
votacao.save()
for votos in request.POST.getlist('voto_parlamentar'):
@@ -4496,7 +4502,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView)
votacao.observacao = request.POST['observacao']
votacao.materia = ordem.materia
votacao.ordem = ordem
- votacao.tipo_resultado_votacao = form.cleaned_data['resultado_votacao']
+ votacao.tipo_resultado_votacao = form.cleaned_data[
+ 'resultado_votacao']
votacao.user = request.user
votacao.ip = get_client_ip(request)
votacao.save()
@@ -4517,7 +4524,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView)
voto_parlamentar.ip = get_client_ip(request)
voto_parlamentar.save()
- ordem.resultado = form.cleaned_data['resultado_votacao'].nome
+ ordem.resultado = form.cleaned_data[
+ 'resultado_votacao'].nome
ordem.votacao_aberta = False
ordem.save()
@@ -4541,7 +4549,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView)
votacao.observacao = request.POST['observacao']
votacao.materia = expediente.materia
votacao.expediente = expediente
- votacao.tipo_resultado_votacao = form.cleaned_data['resultado_votacao']
+ votacao.tipo_resultado_votacao = form.cleaned_data[
+ 'resultado_votacao']
votacao.user = request.user
votacao.ip = get_client_ip(request)
votacao.save()
@@ -4563,7 +4572,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView)
voto_parlamentar.ip = get_client_ip(request)
voto_parlamentar.save()
- expediente.resultado = form.cleaned_data['resultado_votacao'].nome
+ expediente.resultado = form.cleaned_data[
+ 'resultado_votacao'].nome
expediente.votacao_aberta = False
expediente.save()
diff --git a/sapl/settings.py b/sapl/settings.py
index a665a04af..8ddf5e4d7 100644
--- a/sapl/settings.py
+++ b/sapl/settings.py
@@ -204,6 +204,8 @@ TEMPLATES = [
WSGI_APPLICATION = 'sapl.wsgi.application'
+CELERY_BROKER_URL = 'redis://localhost:6379'
+
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases