Browse Source

FIX #1319 customizar painel (#1536)

* Adiciona teste de vie em SessaoPlenaria

* Adiciona teste de view no CasaLegislativa e TipoAutor

* Corrigi erros relacionados a PEP8

* Adiciona logotipo no painel

* Arruma o tamanho do logo

* Fix 1319

Adiciona opção para o usuário decidir se quer ou não mostrar o brasão no painel

* Corrige erros referente a PEP8

* Corrige validação da configuração do brasão da Casa Legislativa

Signed-off-by: João Pedro Sconetto <sconetto.joao@gmail.com>
Signed-off-by: Mariana Mendes <mare.s.mendes@gmail.com>

* Adiciona verificação de existência de casa legislativa

Signed-off-by: Mariana Mendes <mare.s.mendes@gmail.com>
pull/1543/head
Mariana Mendes 7 years ago
committed by Edward
parent
commit
46d4eadd9e
  1. 25
      sapl/base/forms.py
  2. 20
      sapl/base/migrations/0009_appconfig_mostrar_brasao_painel.py
  3. 4
      sapl/base/models.py
  4. 14
      sapl/painel/views.py
  5. 3
      sapl/templates/base/layouts.yaml
  6. 15
      sapl/templates/painel/index.html

25
sapl/base/forms.py

@ -623,7 +623,7 @@ class CasaLegislativaForm(ModelForm):
logotipo = self.cleaned_data.get('logotipo', False)
if logotipo:
if logotipo.size > MAX_IMAGE_UPLOAD_SIZE:
raise ValidationError("Imagem muito grande. ( > 2mb )")
raise ValidationError("Imagem muito grande. ( > 2MB )")
return logotipo
@ -642,6 +642,12 @@ class LoginForm(AuthenticationForm):
class ConfiguracoesAppForm(ModelForm):
mostrar_brasao_painel = forms.BooleanField(
help_text=_('Sugerimos fortemente que faça o upload de imagens com '\
'o fundo transparente.'),
label=_('Mostrar brasão da Casa no painel?'),
required=False)
class Meta:
model = AppConfig
fields = ['documentos_administrativos',
@ -653,7 +659,8 @@ class ConfiguracoesAppForm(ModelForm):
'proposicao_incorporacao_obrigatoria',
'cronometro_discurso',
'cronometro_aparte',
'cronometro_ordem']
'cronometro_ordem',
'mostrar_brasao_painel']
def __init__(self, *args, **kwargs):
super(ConfiguracoesAppForm, self).__init__(*args, **kwargs)
@ -661,6 +668,20 @@ class ConfiguracoesAppForm(ModelForm):
self.fields['cronometro_aparte'].widget.attrs['class'] = 'cronometro'
self.fields['cronometro_ordem'].widget.attrs['class'] = 'cronometro'
def clean_mostrar_brasao_painel(self):
mostrar_brasao_painel = self.cleaned_data.get('mostrar_brasao_painel',
False)
casa = CasaLegislativa.objects.first()
if not casa:
raise ValidationError("Não há casa legislativa relacionada")
if (not bool(casa.logotipo) and mostrar_brasao_painel):
raise ValidationError("Não há logitipo configurado para esta "
"Casa legislativa.")
return mostrar_brasao_painel
class RecuperarSenhaForm(PasswordResetForm):

20
sapl/base/migrations/0009_appconfig_mostrar_brasao_painel.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2017-10-16 20:06
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('base', '0008_auto_20170814_1409'),
]
operations = [
migrations.AddField(
model_name='appconfig',
name='mostrar_brasao_painel',
field=models.BooleanField(default=False, verbose_name='Mostrar brasão da Casa no painel?'),
),
]

4
sapl/base/models.py

@ -157,6 +157,10 @@ class AppConfig(models.Model):
blank=True,
null=True)
mostrar_brasao_painel = models.BooleanField(
default=False,
verbose_name=_('Mostrar brasão da Casa no painel?'))
class Meta:
verbose_name = _('Configurações da Aplicação')
verbose_name_plural = _('Configurações da Aplicação')

14
sapl/painel/views.py

@ -10,6 +10,8 @@ from django.http.response import Http404, HttpResponseRedirect
from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _
from sapl.base.models import AppConfig as ConfiguracoesAplicacao
from sapl.base.models import CasaLegislativa
from sapl.crud.base import Crud
from sapl.painel.apps import AppConfig
from sapl.parlamentares.models import Votante
@ -397,6 +399,15 @@ def get_votos(response, materia):
def get_dados_painel(request, pk):
sessao = SessaoPlenaria.objects.get(id=pk)
casa = CasaLegislativa.objects.first()
app_config = ConfiguracoesAplicacao.objects.first()
brasao = None
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'),
@ -404,7 +415,8 @@ def get_dados_painel(request, pk):
'cronometro_aparte': get_cronometro_status(request, 'aparte'),
'cronometro_discurso': get_cronometro_status(request, 'discurso'),
'cronometro_ordem': get_cronometro_status(request, 'ordem'),
'status_painel': sessao.painel_aberto
'status_painel': sessao.painel_aberto,
'brasao': brasao
}
ordem_dia = get_materia_aberta(pk)

3
sapl/templates/base/layouts.yaml

@ -23,6 +23,9 @@ AppConfig:
{% trans 'Cronômetros do Painel' %}:
- cronometro_discurso cronometro_aparte cronometro_ordem
{% trans 'Configurações do Painel' %}:
- mostrar_brasao_painel
TipoAutor:
{% trans 'Tipo Autor' %}:
- content_type:4 descricao

15
sapl/templates/painel/index.html

@ -27,10 +27,16 @@
font-family: Verdana;
}
}
.center {
margin: auto;
width: 15%;
}
</style>
</head>
<body>
<audio type="hidden" id="audio" src="{% static 'audio/ring.mp3' %}"> </audio>
<audio type="hidden" id="audio" src="{% static 'audio/ring.mp3' %}"></audio>
<h1 id="title"></h1>
<input id="json_url" type="hidden" value="{% url 'sapl.painel:dados_painel' sessao_id %}">
@ -45,6 +51,10 @@
</tr>
</table>
<div class="center">
<img src="" id="logo-painel" alt="" width="100%"/>
</div>
<h2><font color="red"><p align="center"><span id="message"></span></p></font></h2>
<h1><font color="white"><p align="center"><span id="relogio"></span></p></font></h1>
@ -168,6 +178,9 @@
$("#message").text("");
}
if (data["brasao"] != null)
$("#logo-painel").attr("src", data["brasao"]);
var presentes = $("#parlamentares");
var votacao = $("#votacao");
$("#votacao").text('');

Loading…
Cancel
Save