From 1f9e3b0b344ef1b2a6426a331a60589e187c9317 Mon Sep 17 00:00:00 2001 From: Cesar Carvalho Date: Mon, 10 Jun 2019 09:06:28 -0300 Subject: [PATCH] Cria PainelConfig --- sapl/painel/forms.py | 11 +++++- sapl/painel/migrations/0005_painelconfig.py | 27 +++++++++++++ sapl/painel/models.py | 26 ++++++++++++ sapl/painel/urls.py | 5 ++- sapl/painel/views.py | 44 ++++++++++++++++++++- sapl/templates/menu_tabelas_auxiliares.yaml | 3 ++ sapl/templates/painel/layouts.yaml | 4 ++ 7 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 sapl/painel/migrations/0005_painelconfig.py diff --git a/sapl/painel/forms.py b/sapl/painel/forms.py index 619a120d3..e2314c407 100644 --- a/sapl/painel/forms.py +++ b/sapl/painel/forms.py @@ -1,5 +1,5 @@ from django import forms -from .models import Cronometro +from .models import Cronometro, PainelConfig class CronometroForm(forms.ModelForm): @@ -11,4 +11,11 @@ class CronometroForm(forms.ModelForm): super(CronometroForm, self).__init__(*args, **kwargs) self.fields['duracao_cronometro'].widget.attrs['class'] = 'cronometro' if not self.instance.ordenacao: - self.fields['ordenacao'].initial = Cronometro.objects.last().ordenacao + 1 \ No newline at end of file + self.fields['ordenacao'].initial = Cronometro.objects.last().ordenacao + 1 + + +class ConfiguracoesPainelForm(forms.ModelForm): + + class Meta: + model = PainelConfig + fields = ['cronometro_ordem'] \ No newline at end of file diff --git a/sapl/painel/migrations/0005_painelconfig.py b/sapl/painel/migrations/0005_painelconfig.py new file mode 100644 index 000000000..5daa6156c --- /dev/null +++ b/sapl/painel/migrations/0005_painelconfig.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-06-10 11:46 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('painel', '0004_auto_20190603_1033'), + ] + + operations = [ + migrations.CreateModel( + name='PainelConfig', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cronometro_ordem', models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, verbose_name='Cronômetro da Questão de Ordem deve travar os demais?')), + ], + options={ + 'verbose_name': 'Configurações do Painel', + 'verbose_name_plural': 'Configurações do Painel', + 'ordering': ('-id',), + }, + ), + ] diff --git a/sapl/painel/models.py b/sapl/painel/models.py index b3afd2ae2..555899884 100644 --- a/sapl/painel/models.py +++ b/sapl/painel/models.py @@ -65,3 +65,29 @@ class Cronometro(models.Model): def __str__(self): return self.tipo + + +@reversion.register() +class PainelConfig(models.Model): + + cronometro_ordem = models.BooleanField( + verbose_name=_('Cronômetro da Questão de Ordem deve travar os demais?'), + choices=YES_NO_CHOICES, default=True) + + class Meta: + verbose_name = _('Configurações do Painel') + verbose_name_plural = _('Configurações do Painel') + ordering = ('-id',) + + @classmethod + def attr(cls, attr): + config = PainelConfig.objects.first() + + if not config: + config = PainelConfig() + config.save() + + return getattr(config, attr) + + def __str__(self): + return 'Configurações do Painel' diff --git a/sapl/painel/urls.py b/sapl/painel/urls.py index d3921f2e2..c0d6800e5 100644 --- a/sapl/painel/urls.py +++ b/sapl/painel/urls.py @@ -3,7 +3,8 @@ from django.conf.urls import url, include from .apps import AppConfig from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view, painel_parlamentar_view, painel_view, painel_votacao_view, - switch_painel, verifica_painel, votante_view, CronometroPainelCrud) + switch_painel, verifica_painel, votante_view, CronometroPainelCrud, + PainelConfigCrud) app_name = AppConfig.name @@ -20,7 +21,9 @@ urlpatterns = [ url(r'^painel/verifica-painel$', verifica_painel, name="verifica_painel"), url(r'^painel/cronometro$', cronometro_painel, name='cronometro_painel'), + url(r'^sistema/cronometro/', include(CronometroPainelCrud.get_urls())), + url(r'^sistema/painel-config/', include(PainelConfigCrud.get_urls())), url(r'^voto-individual/$', votante_view, name='voto_individual'), diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 2421f527b..34179ecb9 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -24,8 +24,8 @@ from sapl.sessao.models import (ExpedienteMateria, OradorExpediente, OrdemDia, VotoParlamentar) from sapl.utils import filiacao_data, get_client_ip, sort_lista_chave -from .forms import CronometroForm -from .models import Cronometro +from .forms import CronometroForm, ConfiguracoesPainelForm +from .models import Cronometro, PainelConfig VOTACAO_NOMINAL = 2 @@ -36,6 +36,46 @@ class CronometroPainelCrud(CrudAux): form_class = CronometroForm +class PainelConfigCrud(CrudAux): + model = PainelConfig + + class BaseMixin(CrudAux.BaseMixin): + form_class = ConfiguracoesPainelForm + list_url = '' + create_url = '' + + class CreateView(CrudAux.CreateView): + + def get(self, request, *args, **kwargs): + painel_config = PainelConfig.objects.first() + + if not painel_config: + painel_config = PainelConfig() + painel_config.save() + + return HttpResponseRedirect( + reverse('sapl.painel:painelconfig_update', + kwargs={'pk': painel_config.pk})) + + def post(self, request, *args, **kwargs): + return self.get(request, *args, **kwargs) + + class ListView(CrudAux.ListView): + + def get(self, request, *args, **kwargs): + return HttpResponseRedirect(reverse('sapl.painel:painelconfig_create')) + + class DetailView(CrudAux.DetailView): + + def get(self, request, *args, **kwargs): + return HttpResponseRedirect(reverse('sapl.painel:painelconfig_create')) + + class DeleteView(CrudAux.DeleteView): + + def get(self, request, *args, **kwargs): + return HttpResponseRedirect(reverse('sapl.painel:painelconfig_create')) + + # FIXME mudar lógica diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml index 9b02fb73a..45d3638a9 100644 --- a/sapl/templates/menu_tabelas_auxiliares.yaml +++ b/sapl/templates/menu_tabelas_auxiliares.yaml @@ -173,6 +173,9 @@ - title: {% trans 'Cronômetro' %} url: sapl.painel:cronometro_list css_class: btn btn-link + - title: {% trans 'Configurações do Painel' %} + url: sapl.painel:painelconfig_list + css_class: btn btn-link - title: {% trans 'Módulo LexML' %} css_class: head_title children: diff --git a/sapl/templates/painel/layouts.yaml b/sapl/templates/painel/layouts.yaml index 67a806240..47957549e 100644 --- a/sapl/templates/painel/layouts.yaml +++ b/sapl/templates/painel/layouts.yaml @@ -2,3 +2,7 @@ Cronometro: {% trans 'Cronometro' %}: - tipo:4 duracao_cronometro:4 ativo:2 ordenacao:2 + +PainelConfig: + {% trans 'Configurações do Painel' %}: + - cronometro_ordem