diff --git a/sapl/base/forms.py b/sapl/base/forms.py index ca9083d98..f6475e269 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -1557,6 +1557,12 @@ class ConfiguracoesAppForm(ModelForm): label=_('Mostrar brasão da Casa no painel?'), 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( label=AppConfig._meta.get_field( 'google_recaptcha_site_key').verbose_name, @@ -1596,6 +1602,7 @@ class ConfiguracoesAppForm(ModelForm): 'cronometro_ordem', 'cronometro_consideracoes', 'mostrar_brasao_painel', + 'mostrar_voto', 'receber_recibo_proposicao', 'assinatura_ata', 'estatisticas_acesso_normas', diff --git a/sapl/base/migrations/0055_appconfig_mostrar_voto.py b/sapl/base/migrations/0055_appconfig_mostrar_voto.py new file mode 100644 index 000000000..1d4527639 --- /dev/null +++ b/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?'), + ), + ] diff --git a/sapl/base/models.py b/sapl/base/models.py index 8dc7b7c70..9b8f79faa 100644 --- a/sapl/base/models.py +++ b/sapl/base/models.py @@ -233,6 +233,10 @@ class AppConfig(models.Model): default=False, 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 estatisticas_acesso_normas = models.CharField( max_length=1, diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 7f36fa8be..a4c9e2da3 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -446,7 +446,7 @@ def response_nenhuma_materia(response): return JsonResponse(response) -def get_votos(response, materia): +def get_votos(response, materia, mostrar_voto): logger = logging.getLogger(__name__) if type(materia) == OrdemDia: if materia.tipo_votacao != 4: @@ -492,8 +492,13 @@ 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'])) - if votos_parlamentares.get(parlamentar_id=p['parlamentar_id']).voto: - response['presentes'][i]['voto'] = 'Voto Informado' + voto = votos_parlamentares.get(parlamentar_id=p['parlamentar_id']).voto + + if voto: + if mostrar_voto: + response['presentes'][i]['voto'] = voto + else: + response['presentes'][i]['voto'] = 'Voto Informado' except ObjectDoesNotExist: # logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio." # .format(p['parlamentar_id'])) @@ -563,7 +568,8 @@ def get_dados_painel(request, pk): 'cronometro_ordem': get_cronometro_status(request, 'ordem'), 'cronometro_consideracoes': get_cronometro_status(request, 'consideracoes'), 'status_painel': sessao.painel_aberto, - 'brasao': brasao + 'brasao': brasao, + 'mostrar_voto': app_config.mostrar_voto } ordem_dia = get_materia_aberta(pk) @@ -574,11 +580,11 @@ def get_dados_painel(request, pk): if ordem_dia: return JsonResponse(get_votos( get_presentes(pk, response, ordem_dia), - ordem_dia)) + ordem_dia, app_config.mostrar_voto)) elif expediente: return JsonResponse(get_votos( get_presentes(pk, response, expediente), - expediente)) + expediente, app_config.mostrar_voto)) # Caso não tenha nenhuma aberta, # 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: return JsonResponse(get_votos( 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 return response_nenhuma_materia(get_presentes(pk, response, None)) diff --git a/sapl/templates/base/layouts.yaml b/sapl/templates/base/layouts.yaml index b918af8a7..6ff5ebe44 100644 --- a/sapl/templates/base/layouts.yaml +++ b/sapl/templates/base/layouts.yaml @@ -48,7 +48,7 @@ AppConfig: {% trans 'Módulo Painel' %}: - cronometro_discurso cronometro_aparte - cronometro_ordem cronometro_consideracoes - - mostrar_brasao_painel + - mostrar_brasao_painel mostrar_voto {% trans 'Estatísticas de acesso' %}: - estatisticas_acesso_normas diff --git a/sapl/templates/painel/index.html b/sapl/templates/painel/index.html index 1cb2e2c83..c9a7d813f 100644 --- a/sapl/templates/painel/index.html +++ b/sapl/templates/painel/index.html @@ -281,11 +281,12 @@ var presentes_list = data["presentes"]; if (data["status_painel"] == true) { + mostrar_voto = data["mostrar_voto"]; presentes.append(''); $.each(presentes_list, function (index, parlamentar) { - if (parlamentar.voto == 'Voto Informado'){ + if (parlamentar.voto == 'Voto Informado' && mostrar_voto == false){ $('#parlamentares_list').append('
' + parlamentar.nome + ' ' +