diff --git a/sapl/painel/migrations/0003_auto_20190603_0815.py b/sapl/painel/migrations/0003_auto_20190603_0815.py new file mode 100644 index 000000000..b58cc3bf6 --- /dev/null +++ b/sapl/painel/migrations/0003_auto_20190603_0815.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-06-03 11:15 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('painel', '0002_auto_20180523_1430'), + ] + + operations = [ + migrations.RemoveField( + model_name='cronometro', + name='data_cronometro', + ), + migrations.AddField( + model_name='cronometro', + name='duracao_cronometro', + field=models.DurationField(blank=True, null=True, verbose_name='Duração do cronômetro'), + ), + migrations.AlterField( + model_name='cronometro', + name='status', + field=models.CharField(choices=[('I', 'Start'), ('R', 'Reset'), ('S', 'Stop'), ('C', 'Increment')], default='S', max_length=1, verbose_name='Status do cronômetro'), + ), + ] diff --git a/sapl/painel/migrations/0004_auto_20190603_0826.py b/sapl/painel/migrations/0004_auto_20190603_0826.py new file mode 100644 index 000000000..6c0481cc4 --- /dev/null +++ b/sapl/painel/migrations/0004_auto_20190603_0826.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-06-03 11:26 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('painel', '0003_auto_20190603_0815'), + ] + + operations = [ + migrations.CreateModel( + name='TipoCronometro', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nome', models.CharField(max_length=100, verbose_name='Tipo Cronômetro')), + ], + options={ + 'verbose_name': 'Tipo de Cronômetro', + 'verbose_name_plural': 'Tipos de Cronômetro', + 'ordering': ['nome'], + }, + ), + migrations.AlterField( + model_name='cronometro', + name='tipo', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='painel.TipoCronometro', verbose_name='Tipo Cronômetro'), + ), + ] diff --git a/sapl/painel/migrations/0005_auto_20190603_0842.py b/sapl/painel/migrations/0005_auto_20190603_0842.py new file mode 100644 index 000000000..beb5f2681 --- /dev/null +++ b/sapl/painel/migrations/0005_auto_20190603_0842.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-06-03 11:42 +from __future__ import unicode_literals + +from django.db import migrations + + +def create_default_tipos_cronometro(apps, schema_editor): + TipoCronometro = apps.get_model('painel', 'TipoCronometro') + tipos_default = ['Cronômetro do Discurso', 'Cronômetro do Aparte', + 'Cronômetro da Ordem', 'Cronômetro de Considerações Finais'] + for tipo in tipos_default: + TipoCronometro.objects.get_or_create(nome=tipo) + + +class Migration(migrations.Migration): + + dependencies = [ + ('painel', '0004_auto_20190603_0826'), + ] + + operations = [ + migrations.RunPython(create_default_tipos_cronometro) + ] diff --git a/sapl/painel/models.py b/sapl/painel/models.py index f999ca480..5174abf06 100644 --- a/sapl/painel/models.py +++ b/sapl/painel/models.py @@ -21,6 +21,19 @@ class Painel(models.Model): return str(self.aberto) + ":" + self.data_painel.strftime("%d/%m/%Y") +@reversion.register() +class TipoCronometro(models.Model): + nome = models.CharField(max_length=30, verbose_name=_('Tipo Cronômetro')) + + class Meta: + verbose_name = _('Tipo de Cronômetro') + verbose_name_plural = _('Tipos de Cronômetro') + ordering = ['nome'] + + def __str__(self): + return self.nome + + @reversion.register() class Cronometro(models.Model): CRONOMETRO_TYPES = ( @@ -34,6 +47,7 @@ class Cronometro(models.Model): ('I', 'Start'), ('R', 'Reset'), ('S', 'Stop'), + ('C', 'Increment'), ) status = models.CharField( @@ -41,7 +55,13 @@ class Cronometro(models.Model): verbose_name=_('Status do cronômetro'), choices=CRONOMETRO_STATUS, default='S') - data_cronometro = models.DateField(verbose_name=_('Data do cronômetro')) - tipo = models.CharField( - max_length=1, choices=CRONOMETRO_TYPES, - verbose_name=_('Tipo Cronômetro')) + duracao_cronometro = models.DurationField( + verbose_name=_('Duração do cronômetro'), + blank=True, + null=True) + # tipo = models.CharField( + # max_length=1, choices=CRONOMETRO_TYPES, + # verbose_name=_('Tipo Cronômetro')) + tipo = models.ForeignKey(TipoCronometro, + on_delete=models.PROTECT, + verbose_name=_('Tipo Cronômetro')) \ No newline at end of file diff --git a/sapl/painel/urls.py b/sapl/painel/urls.py index 0795d0a35..aa8d93608 100644 --- a/sapl/painel/urls.py +++ b/sapl/painel/urls.py @@ -1,9 +1,10 @@ -from django.conf.urls import url +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) + switch_painel, verifica_painel, votante_view, CronometroPainelCrud, + TipoCronometroCrud) 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'^painel/cronometro$', include(CronometroPainelCrud.get_urls())), + # url(r'^painel/cronometro', include(CronometroPainelCrud.get_urls())), + url(r'^sistema/cronometro/tipo/', + include(TipoCronometroCrud.get_urls())), url(r'^voto-individual/$', votante_view, name='voto_individual'), diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 333c3771e..c23e35484 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -15,7 +15,7 @@ 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.crud.base import Crud, CrudAux from sapl.painel.apps import AppConfig from sapl.parlamentares.models import Legislatura, Parlamentar, Votante from sapl.sessao.models import (ExpedienteMateria, OradorExpediente, OrdemDia, @@ -24,11 +24,12 @@ from sapl.sessao.models import (ExpedienteMateria, OradorExpediente, OrdemDia, VotoParlamentar) from sapl.utils import filiacao_data, get_client_ip, sort_lista_chave -from .models import Cronometro +from .models import TipoCronometro, Cronometro VOTACAO_NOMINAL = 2 -CronometroPainelCrud = Crud.build(Cronometro, '') +CronometroPainelCrud = CrudAux.build(Cronometro, '') +TipoCronometroCrud = CrudAux.build(TipoCronometro, 'tipo_cronometro') # FIXME mudar lógica diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml index ebe873366..9042b42b9 100644 --- a/sapl/templates/menu_tabelas_auxiliares.yaml +++ b/sapl/templates/menu_tabelas_auxiliares.yaml @@ -167,6 +167,12 @@ - title: {% trans 'Tipo de Justificativa' %} url: sapl.sessao:tipojustificativa_list css_class: btn btn-link +- title: {% trans 'Módulo Painel' %} + css_class: head_title + children: + - title: {% trans 'Tipo de Cronômetro' %} + url: sapl.painel:tipocronometro_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 e0d01ac66..8c3452732 100644 --- a/sapl/templates/painel/layouts.yaml +++ b/sapl/templates/painel/layouts.yaml @@ -2,3 +2,7 @@ Cronometro: {% trans 'Cronometro' %}: - status:3 data_cronometro:6 tipo + +TipoCronometro: + {% trans 'Tipo de Cronômetro' %}: + - nome \ No newline at end of file