diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 7e64c33cd..1c47b2877 100644 --- a/sapl/base/forms.py +++ b/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): diff --git a/sapl/base/migrations/0009_appconfig_mostrar_brasao_painel.py b/sapl/base/migrations/0009_appconfig_mostrar_brasao_painel.py new file mode 100644 index 000000000..9fb469da7 --- /dev/null +++ b/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?'), + ), + ] diff --git a/sapl/base/models.py b/sapl/base/models.py index c75091341..03278a5af 100644 --- a/sapl/base/models.py +++ b/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') diff --git a/sapl/painel/views.py b/sapl/painel/views.py index eae434de3..4285545ab 100644 --- a/sapl/painel/views.py +++ b/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) diff --git a/sapl/templates/base/layouts.yaml b/sapl/templates/base/layouts.yaml index cfa78b435..cef9615d6 100644 --- a/sapl/templates/base/layouts.yaml +++ b/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 diff --git a/sapl/templates/painel/index.html b/sapl/templates/painel/index.html index c6701b462..bfe6ade37 100644 --- a/sapl/templates/painel/index.html +++ b/sapl/templates/painel/index.html @@ -27,10 +27,16 @@ font-family: Verdana; } } + .center { + margin: auto; + width: 15%; + + } + - +

@@ -45,6 +51,10 @@ +
+ +
+

@@ -168,6 +178,9 @@ $("#message").text(""); } + if (data["brasao"] != null) + $("#logo-painel").attr("src", data["brasao"]); + var presentes = $("#parlamentares"); var votacao = $("#votacao"); $("#votacao").text('');