Browse Source

Permite exibição do voto no painel com votação ainda aberta (#3615)

pull/3623/head
cristian-longhi 2 years ago
committed by GitHub
parent
commit
e3e958ab44
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      sapl/base/forms.py
  2. 18
      sapl/base/migrations/0055_appconfig_mostrar_voto.py
  3. 4
      sapl/base/models.py
  4. 20
      sapl/painel/views.py
  5. 2
      sapl/templates/base/layouts.yaml
  6. 3
      sapl/templates/painel/index.html

7
sapl/base/forms.py

@ -1557,6 +1557,12 @@ class ConfiguracoesAppForm(ModelForm):
label=_('Mostrar brasão da Casa no painel?'), label=_('Mostrar brasão da Casa no painel?'),
required=False) required=False)
mostrar_voto = forms.BooleanField(
help_text=_('Se selecionado, exibe qual é o voto, e não apenas a indicação de que já votou, '
'com a votação ainda aberta.'),
label=_('Mostrar voto do Parlamentar no painel durante a votação?'),
required=False)
google_recaptcha_site_key = forms.CharField( google_recaptcha_site_key = forms.CharField(
label=AppConfig._meta.get_field( label=AppConfig._meta.get_field(
'google_recaptcha_site_key').verbose_name, 'google_recaptcha_site_key').verbose_name,
@ -1596,6 +1602,7 @@ class ConfiguracoesAppForm(ModelForm):
'cronometro_ordem', 'cronometro_ordem',
'cronometro_consideracoes', 'cronometro_consideracoes',
'mostrar_brasao_painel', 'mostrar_brasao_painel',
'mostrar_voto',
'receber_recibo_proposicao', 'receber_recibo_proposicao',
'assinatura_ata', 'assinatura_ata',
'estatisticas_acesso_normas', 'estatisticas_acesso_normas',

18
sapl/base/migrations/0055_appconfig_mostrar_voto.py

@ -0,0 +1,18 @@
# Generated by Django 2.2.28 on 2022-10-05 18:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('base', '0054_auto_20220921_1217'),
]
operations = [
migrations.AddField(
model_name='appconfig',
name='mostrar_voto',
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Exibir voto do Parlamentar antes de encerrar a votação?'),
),
]

4
sapl/base/models.py

@ -233,6 +233,10 @@ class AppConfig(models.Model):
default=False, default=False,
verbose_name=_('Mostrar brasão da Casa no painel?')) verbose_name=_('Mostrar brasão da Casa no painel?'))
mostrar_voto = models.BooleanField(
verbose_name=_('Exibir voto do Parlamentar antes de encerrar a votação?'),
choices=YES_NO_CHOICES, default=False)
# MÓDULO ESTATÍSTICAS DE ACESSO # MÓDULO ESTATÍSTICAS DE ACESSO
estatisticas_acesso_normas = models.CharField( estatisticas_acesso_normas = models.CharField(
max_length=1, max_length=1,

20
sapl/painel/views.py

@ -446,7 +446,7 @@ def response_nenhuma_materia(response):
return JsonResponse(response) return JsonResponse(response)
def get_votos(response, materia): def get_votos(response, materia, mostrar_voto):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if type(materia) == OrdemDia: if type(materia) == OrdemDia:
if materia.tipo_votacao != 4: if materia.tipo_votacao != 4:
@ -492,8 +492,13 @@ def get_votos(response, materia):
for i, p in enumerate(response['presentes']): for i, p in enumerate(response['presentes']):
try: 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: voto = votos_parlamentares.get(parlamentar_id=p['parlamentar_id']).voto
response['presentes'][i]['voto'] = 'Voto Informado'
if voto:
if mostrar_voto:
response['presentes'][i]['voto'] = voto
else:
response['presentes'][i]['voto'] = 'Voto Informado'
except ObjectDoesNotExist: except ObjectDoesNotExist:
# logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio." # logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio."
# .format(p['parlamentar_id'])) # .format(p['parlamentar_id']))
@ -563,7 +568,8 @@ def get_dados_painel(request, pk):
'cronometro_ordem': get_cronometro_status(request, 'ordem'), 'cronometro_ordem': get_cronometro_status(request, 'ordem'),
'cronometro_consideracoes': get_cronometro_status(request, 'consideracoes'), 'cronometro_consideracoes': get_cronometro_status(request, 'consideracoes'),
'status_painel': sessao.painel_aberto, 'status_painel': sessao.painel_aberto,
'brasao': brasao 'brasao': brasao,
'mostrar_voto': app_config.mostrar_voto
} }
ordem_dia = get_materia_aberta(pk) ordem_dia = get_materia_aberta(pk)
@ -574,11 +580,11 @@ def get_dados_painel(request, pk):
if ordem_dia: if ordem_dia:
return JsonResponse(get_votos( return JsonResponse(get_votos(
get_presentes(pk, response, ordem_dia), get_presentes(pk, response, ordem_dia),
ordem_dia)) ordem_dia, app_config.mostrar_voto))
elif expediente: elif expediente:
return JsonResponse(get_votos( return JsonResponse(get_votos(
get_presentes(pk, response, expediente), get_presentes(pk, response, expediente),
expediente)) expediente, app_config.mostrar_voto))
# Caso não tenha nenhuma aberta, # Caso não tenha nenhuma aberta,
# a matéria a ser mostrada no Painel deve ser a última votada # a matéria a ser mostrada no Painel deve ser a última votada
@ -614,7 +620,7 @@ def get_dados_painel(request, pk):
if ordem_expediente: if ordem_expediente:
return JsonResponse(get_votos( return JsonResponse(get_votos(
get_presentes(pk, response, ordem_expediente), get_presentes(pk, response, ordem_expediente),
ordem_expediente)) ordem_expediente, app_config.mostrar_voto))
# Retorna que não há nenhuma matéria já votada ou aberta # Retorna que não há nenhuma matéria já votada ou aberta
return response_nenhuma_materia(get_presentes(pk, response, None)) return response_nenhuma_materia(get_presentes(pk, response, None))

2
sapl/templates/base/layouts.yaml

@ -48,7 +48,7 @@ AppConfig:
{% trans 'Módulo Painel' %}: {% trans 'Módulo Painel' %}:
- cronometro_discurso cronometro_aparte - cronometro_discurso cronometro_aparte
- cronometro_ordem cronometro_consideracoes - cronometro_ordem cronometro_consideracoes
- mostrar_brasao_painel - mostrar_brasao_painel mostrar_voto
{% trans 'Estatísticas de acesso' %}: {% trans 'Estatísticas de acesso' %}:
- estatisticas_acesso_normas - estatisticas_acesso_normas

3
sapl/templates/painel/index.html

@ -281,11 +281,12 @@
var presentes_list = data["presentes"]; var presentes_list = data["presentes"];
if (data["status_painel"] == true) { if (data["status_painel"] == true) {
mostrar_voto = data["mostrar_voto"];
presentes.append('<table id="parlamentares_list">'); presentes.append('<table id="parlamentares_list">');
$.each(presentes_list, function (index, parlamentar) { $.each(presentes_list, function (index, parlamentar) {
if (parlamentar.voto == 'Voto Informado'){ if (parlamentar.voto == 'Voto Informado' && mostrar_voto == false){
$('#parlamentares_list').append('<tr><td style="padding-right:20px; color:yellow" >' + $('#parlamentares_list').append('<tr><td style="padding-right:20px; color:yellow" >' +
parlamentar.nome + parlamentar.nome +
'</td> <td style="padding-right:20px; color:yellow">' + '</td> <td style="padding-right:20px; color:yellow">' +

Loading…
Cancel
Save