Browse Source

hot-fix: recover epoch from server always

3.1.x
Edward Ribeiro 4 days ago
parent
commit
d070724b27
  1. 43
      sapl/painel/views.py
  2. 23
      sapl/templates/painel/index.html

43
sapl/painel/views.py

@ -13,6 +13,7 @@ from django.http.response import Http404, HttpResponseRedirect
from django.shortcuts import render
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.cache import never_cache
from sapl.base.models import AppConfig as ConfiguracoesAplicacao
from sapl.base.models import CasaLegislativa
@ -117,7 +118,8 @@ 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:
@ -133,6 +135,23 @@ def votacao(context, context_vars):
'Ordem do Dia/Expediente em votação.'})
return context, context_vars
@never_cache
@user_passes_test(check_permission)
def painel_view(request, pk):
utc_now = timezone.now()
local_now = timezone.localtime(utc_now)
utc_offset = int(local_now.utcoffset().total_seconds() / 60)
server_epoch_ms = int(utc_now.timestamp() * 1000)
context = {'head_title': str(_('Painel Plenário')),
'sessao_id': pk,
'server_epoch_ms': server_epoch_ms,
'utc_offset': utc_offset,
}
return render(request, 'painel/index.html', context)
def sessao_votacao(context, context_vars):
pk = context_vars['sessao'].pk
context.update({'sessao_id': pk})
@ -248,13 +267,15 @@ def votante_view(request):
elif context_vars['expediente']:
try:
logger.info("user=" + username + ". Tentando obter objeto VotoParlamentar para parlamentar={} e expediente={}."
logger.info(
"user=" + username + ". Tentando obter objeto VotoParlamentar para parlamentar={} e expediente={}."
.format(context_vars['parlamentar'], context_vars['expediente']))
voto = VotoParlamentar.objects.get(
parlamentar=context_vars['parlamentar'],
expediente=context_vars['expediente'])
except ObjectDoesNotExist:
logger.error("user=" + username + ". Erro ao obter VotoParlamentar para parlamentar={} e expediente={}. Criando objeto."
logger.error(
"user=" + username + ". Erro ao obter VotoParlamentar para parlamentar={} e expediente={}. Criando objeto."
.format(context_vars['parlamentar'], context_vars['expediente']))
voto = VotoParlamentar.objects.create(
parlamentar=context_vars['parlamentar'],
@ -263,7 +284,8 @@ def votante_view(request):
ip=get_client_ip(request),
expediente=context_vars['expediente'])
else:
logger.info("user=" + username + ". VotoParlamentar para parlamentar={} e expediente={} obtido com sucesso."
logger.info(
"user=" + username + ". VotoParlamentar para parlamentar={} e expediente={} obtido com sucesso."
.format(context_vars['parlamentar'], context_vars['expediente']))
voto.voto = request.POST['voto']
voto.ip = get_client_ip(request)
@ -276,15 +298,6 @@ def votante_view(request):
return render(request, template_name, context)
@user_passes_test(check_permission)
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 }
return render(request, 'painel/index.html', context)
@user_passes_test(check_permission)
def switch_painel(request):
sessao = SessaoPlenaria.objects.get(id=request.POST['pk_sessao'])
@ -361,7 +374,6 @@ def get_presentes(pk, response, materia):
oradores_list = []
for o in oradores:
oradores_list.append(
{
'nome': o.parlamentar.nome_parlamentar,
@ -515,7 +527,8 @@ def get_votos(response, materia, mostrar_voto):
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({

23
sapl/templates/painel/index.html

@ -159,22 +159,27 @@
// biblioteca moment.js é recomendada, pois ela trata data e hora
// melhor que o Date() do JS.
$("#date").append(moment().format("DD/MM/YY"));
var offset = parseFloat({{ utc_offset }});
//TODO: replace by a fancy jQuery clock
function checkTime(i) {
if (i<10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
const utcOffset = {{ utc_offset }};
const serverEpochMs = {{ server_epoch_ms }};
const pageLoadedAtMs = performance.now();
function startTime() {
var today = moment.utc().utcOffset(offset).format("HH:mm:ss");
$("#relogio").text(today)
var t = setTimeout(function(){
startTime()
}, 500);
const elapsedMs = performance.now() - pageLoadedAtMs;
const now = moment
.utc(serverEpochMs + elapsedMs)
.utcOffset(utcOffset);
$("#date").text(now.format("DD/MM/YY"));
$("#relogio").text(now.format("HH:mm:ss"));
setTimeout(startTime, 500);
}
startTime();

Loading…
Cancel
Save