diff --git a/sapl/rules/map_rules.py b/sapl/rules/map_rules.py index 2b6204ec2..aa691da5e 100644 --- a/sapl/rules/map_rules.py +++ b/sapl/rules/map_rules.py @@ -172,6 +172,7 @@ rules_group_sessao = { (sessao.RegistroVotacao, __base__), (sessao.VotoParlamentar, __base__), (sessao.JustificativaAusencia, __base__), + (sessao.RetiradaPauta, __base__) ] } @@ -269,6 +270,7 @@ rules_group_geral = { (sessao.JustificativaAusencia, __base__), (sessao.Bloco, __base__), (sessao.ResumoOrdenacao, __base__), + (sessao.TipoRetiradaPauta, __base__), (lexml.LexmlProvedor, __base__), (lexml.LexmlPublicador, __base__), diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index ec72b1b5c..ed9e414c7 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -26,7 +26,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, from .models import (Bancada, Bloco, ExpedienteMateria, Orador, JustificativaAusencia, OradorExpediente, OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, TipoResultadoVotacao, OcorrenciaSessao, - RegistroVista) + RetiradaPauta, TipoRetiradaPauta) @@ -191,14 +191,18 @@ class SessaoPlenariaForm(ModelForm): return self.cleaned_data -class RegistroVistaForm(ModelForm): +class RetiradaPautaForm(ModelForm): parlamentar = forms.ModelChoiceField(required=True, empty_label='------', queryset=Parlamentar.objects.all()) + tipo_de_retirada = forms.ModelChoiceField(required=True, + empty_label='------', + queryset=TipoRetiradaPauta.objects.all()) + class Meta: - model = RegistroVista + model = RetiradaPauta exclude = ['ordem', 'expediente', 'materia'] diff --git a/sapl/sessao/migrations/0028_auto_20181031_0902.py b/sapl/sessao/migrations/0028_auto_20181031_0902.py new file mode 100644 index 000000000..dc9934b9a --- /dev/null +++ b/sapl/sessao/migrations/0028_auto_20181031_0902.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-10-31 12:02 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0032_auto_20181022_1743'), + ('parlamentares', '0025_auto_20180924_1724'), + ('sessao', '0027_auto_20181023_1239'), + ] + + operations = [ + migrations.CreateModel( + name='RetiradaPauta', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('observacao', models.TextField(blank=True, verbose_name='Observações')), + ('expediente', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.ExpedienteMateria')), + ('materia', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='materia.MateriaLegislativa')), + ('ordem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.OrdemDia')), + ('parlamentar', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar', verbose_name='Requerente')), + ], + options={ + 'verbose_name_plural': 'Retirada de Pauta', + 'verbose_name': 'Retirada de Pauta', + }, + ), + migrations.CreateModel( + name='TipoRetiradaPauta', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('descricao', models.CharField(max_length=150, verbose_name='Descrição')), + ], + options={ + 'verbose_name_plural': 'Tipos de Retirada de Pauta', + 'verbose_name': 'Tipo de Retidara de Pauta', + 'ordering': ['descricao'], + }, + ), + migrations.AddField( + model_name='retiradapauta', + name='tipo_de_retirada', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='sessao.TipoRetiradaPauta', verbose_name='Motivo de Retirada de Pauta'), + ), + ] diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 649958c6d..f06ace4ec 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -584,6 +584,18 @@ class ResumoOrdenacao(models.Model): def __str__(self): return 'Ordenação do Resumo de uma Sessão' +@reversion.register() +class TipoRetiradaPauta(models.Model): + descricao = models.CharField(max_length=150, verbose_name=_('Descrição')) + + class Meta: + verbose_name = _('Tipo de Retidara de Pauta') + verbose_name_plural = _('Tipos de Retirada de Pauta') + ordering = ['descricao'] + + def __str__(self): + return self.descricao + @reversion.register() class TipoJustificativa(models.Model): @@ -663,7 +675,7 @@ class JustificativaAusencia(models.Model): using=using, update_fields=update_fields) -class RegistroVista(models.Model): +class RetiradaPauta(models.Model): materia = models.ForeignKey(MateriaLegislativa, on_delete=models.CASCADE) ordem = models.ForeignKey(OrdemDia, @@ -676,14 +688,18 @@ class RegistroVista(models.Model): on_delete=models.CASCADE) observacao = models.TextField(blank=True, verbose_name=_('Observações')) - parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT, - verbose_name=_('Requerente')) + verbose_name=_('Requerente'), + blank=True, + null=True) + tipo_de_retirada = models.ForeignKey(TipoRetiradaPauta, + on_delete=models.PROTECT, + verbose_name=_('Motivo de Retirada de Pauta')) class Meta: - verbose_name = _('Pedido de Vista') - verbose_name_plural = _('Pedidos de Vista') + verbose_name = _('Retirada de Pauta') + verbose_name_plural = _('Retirada de Pauta') def __str__(self): return _('Ordem: %(ordem)s - Requerente: %(requerente)s - ' @@ -699,6 +715,6 @@ class RegistroVista(models.Model): # forem reestruturados e os campos ordem e expediente forem unificados if not xor(bool(self.ordem), bool(self.expediente)): raise ValidationError( - 'RegistroVotacao deve ter exatamente um dos campos ' + 'ReritadaPauta deve ter exatamente um dos campos ' 'ordem ou expediente preenchido. Ambos estão preenchidos: ' '{}, {}'. format(self.ordem, self.expediente)) diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index f2e2fbbcc..fda32cfa4 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -12,6 +12,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, PresencaOrdemDiaView, PresencaView, ResumoOrdenacaoView, ResumoView, ResumoAtaView, SessaoCrud, TipoJustificativaCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud, + TipoExpedienteCrud, TipoResultadoVotacaoCrud,TipoRetiradaPautaCrud, TipoSessaoCrud, VotacaoEditView, VotacaoExpedienteEditView, VotacaoExpedienteView, VotacaoNominalEditView, @@ -76,6 +77,8 @@ urlpatterns = [ include(TipoExpedienteCrud.get_urls())), url(r'^sistema/sessao-plenaria/tipo-justificativa/', include(TipoJustificativaCrud.get_urls())), + url(r'^sistema/sessao-plenaria/tipo-retirada-pauta/', + include(TipoRetiradaPautaCrud.get_urls())), url(r'^sistema/bancada/', include(BancadaCrud.get_urls())), url(r'^sistema/bloco/', diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 845608f79..6aa746620 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -43,24 +43,22 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm, MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet, PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, - VotacaoNominalForm) -from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria, - ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa, + VotacaoNominalForm, RetiradaPautaForm) +from .models import (Bancada, Bloco, CargoBancada, CargoMesa, + ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, - TipoJustificativa, TipoResultadoVotacao, TipoSessaoPlenaria, - VotoParlamentar) + TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar, TipoRetiradaPauta, + RetiradaPauta, TipoJustificativa, JustificativaAusencia) TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria') TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente') TipoJustificativaCrud = CrudAux.build(TipoJustificativa, 'tipo_justificativa') CargoBancadaCrud = CrudAux.build(CargoBancada, '') - - -TipoResultadoVotacaoCrud = CrudAux.build( - TipoResultadoVotacao, 'tipo_resultado_votacao') +TipoResultadoVotacaoCrud = CrudAux.build(TipoResultadoVotacao, 'tipo_resultado_votacao') +TipoRetiradaPautaCrud = CrudAux.build(TipoRetiradaPauta, 'tipo_retirada_pauta') def reordernar_materias_expediente(request, pk): diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml index 65ea6fd6f..6c8734805 100644 --- a/sapl/templates/menu_tabelas_auxiliares.yaml +++ b/sapl/templates/menu_tabelas_auxiliares.yaml @@ -152,6 +152,9 @@ - title: {% trans 'Tipo de Expediente' %} url: sapl.sessao:tipoexpediente_list css_class: btn btn-link + - title: {% trans 'Tipo de Retirada de Pauta' %} + url: sapl.sessao:tiporetiradapauta_list + css_class: btn btn-link - title: {% trans 'Ordenação do Resumo' %} url: sapl.sessao:resumo_ordenacao css_class: btn btn-link diff --git a/sapl/templates/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml index 4e9e1118a..4ddfd1782 100644 --- a/sapl/templates/sessao/layouts.yaml +++ b/sapl/templates/sessao/layouts.yaml @@ -99,3 +99,7 @@ JustificativaAusencia: - materias_do_expediente - materias_da_ordem_do_dia - observacao + +TipoRetiradaPauta: + {% trans 'Tipo Retirada Pauta'%}: + - descricao diff --git a/sapl/templates/sistema.html b/sapl/templates/sistema.html index 2283266b8..8c1784038 100644 --- a/sapl/templates/sistema.html +++ b/sapl/templates/sistema.html @@ -104,6 +104,7 @@
Tipo de Sessão Plenária
Tipo de Resultado da Votação
Tipo de Expediente
+
Tipo de Retirada de Pauta
Ordenação do Resumo
Tipo de Justificativa de Ausência