|
|
@ -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: ' + |
|
|
|
('''<li><a href="%s">%s</a></li>''' % ( |
|
|
|
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: ' + |
|
|
|
('''<li><a href="%s">%s</a></li>''' % ( |
|
|
|
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), |
|
|
|