diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 2587474b8..c232c60e2 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -193,30 +193,48 @@ class SessaoPlenariaForm(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 = RetiradaPauta - exclude = ['ordem', - 'expediente', - 'materia'] + fields = ['ordem', + 'expediente', + 'parlamentar', + 'tipo_de_retirada', + 'data'] def __init__(self, *args, **kwargs): - row1 = to_row[('parlamentar', 6), - ('tipo_de_retirada', 6)] - row2 = to_row[('observacao',12)] + row1 = to_row[('tipo_de_retirada', 5), + ('parlamentar', 4), + ('data', 3)] + row2 = to_row[('ordem', 6), + ('expediente', 6)] + row3 = to_row[('observacao',12)] self.helper = FormHelper() self.helper.layout = SaplFormLayout( Fieldset(_('Retirada de Pauta'), - row1, row2)) + row1, row2, row3)) + + q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria']) + ordens = OrdemDia.objects.filter(q) + expedientes = ExpedienteMateria.objects.filter(q) + + super(RetiradaPautaForm, self).__init__( + *args, **kwargs) + presencas = SessaoPlenariaPresenca.objects.filter( + q).order_by('parlamentar__nome_parlamentar') + presentes = [p.parlamentar for p in presencas] + + self.fields['materias_do_expediente'].choices = [ + (e.id, e.materia) for e in expedientes] + self.fields['materias_da_ordem_do_dia'].choices = [ + (o.id, o.materia) for o in ordens] + self.fields['parlamentar'].choices = [ + ("0", "------------")] + [(p.id, p) for p in presentes] class BancadaForm(ModelForm): diff --git a/sapl/sessao/migrations/0030_auto_20181113_1149.py b/sapl/sessao/migrations/0030_auto_20181113_1149.py new file mode 100644 index 000000000..bdae8aa07 --- /dev/null +++ b/sapl/sessao/migrations/0030_auto_20181113_1149.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-13 13:49 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0029_auto_20181024_0952'), + ] + + operations = [ + migrations.AddField( + model_name='retiradapauta', + name='data', + field=models.DateField(default=django.utils.timezone.now, verbose_name='Data'), + ), + migrations.AddField( + model_name='retiradapauta', + name='sessao_plenaria', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária'), + ), + ] diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index f06ace4ec..b225a2036 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -2,6 +2,7 @@ from operator import xor from django.core.exceptions import ValidationError from django.db import models +from django.utils import timezone from django.utils.translation import ugettext_lazy as _ from model_utils import Choices import reversion @@ -678,6 +679,11 @@ class JustificativaAusencia(models.Model): class RetiradaPauta(models.Model): materia = models.ForeignKey(MateriaLegislativa, on_delete=models.CASCADE) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.CASCADE, + verbose_name=_('Sessão Plenária'), + blank=True, + null=True) ordem = models.ForeignKey(OrdemDia, blank=True, null=True, @@ -686,6 +692,8 @@ class RetiradaPauta(models.Model): blank=True, null=True, on_delete=models.CASCADE) + data = models.DateField(verbose_name=_('Data'), + default=timezone.now) observacao = models.TextField(blank=True, verbose_name=_('Observações')) parlamentar = models.ForeignKey(Parlamentar, diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index fda32cfa4..f9b07967d 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -10,7 +10,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, PesquisarPautaSessaoView, PesquisarSessaoPlenariaView, PresencaOrdemDiaView, PresencaView, - ResumoOrdenacaoView, ResumoView, ResumoAtaView, SessaoCrud, + ResumoOrdenacaoView, ResumoView, ResumoAtaView, RetiradaPautaCrud, SessaoCrud, TipoJustificativaCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud,TipoRetiradaPautaCrud, TipoSessaoCrud, VotacaoEditView, @@ -40,7 +40,7 @@ urlpatterns = [ OradorExpedienteCrud.get_urls() + ExpedienteMateriaCrud.get_urls() + JustificativaAusenciaCrud.get_urls() + - MateriaOrdemDiaCrud.get_urls())), + MateriaOrdemDiaCrud.get_urls() + RetiradaPautaCrud.get_urls())), url(r'^sessao/(?P\d+)/mesa$', MesaView.as_view(), name='mesa'), @@ -160,5 +160,5 @@ urlpatterns = [ name='votacao_simbolica_transparencia'), url(r'^sessao/mudar-ordem-materia-sessao/', mudar_ordem_materia_sessao, - name='mudar_ordem_materia_sessao'), + name='mudar_ordem_materia_sessao'), ] diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 6aa746620..37c2f1b76 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -3216,3 +3216,27 @@ class JustificativaAusenciaCrud(MasterDetailCrud): class DeleteView(MasterDetailCrud.DeleteView): pass + + +class RetiradaPautaCrud(MasterDetailCrud): + model = RetiradaPauta + public = [RP_LIST, RP_DETAIL, ] + parent_field = 'sessao_plenaria' + + class BaseMixin(MasterDetailCrud.BaseMixin): + list_field_names = ['tipo_de_retirada', 'materia', 'observacao', 'parlamentar'] + + class ListView(MasterDetailCrud.ListView): + paginate_by = 10 + + class CreateView(MasterDetailCrud.CreateView): + form_class = RetiradaPautaForm + layout_key = None + + def get_initial(self): + sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk']) + return {'sessao_plenaria': sessao_plenaria} + + def get_success_url(self): + return reverse('sapl.sessao:retiradapauta_list', + kwargs={'pk': self.kwargs['pk']}) \ No newline at end of file diff --git a/sapl/templates/sessao/subnav.yaml b/sapl/templates/sessao/subnav.yaml index 40c5903c4..5e768ae4e 100644 --- a/sapl/templates/sessao/subnav.yaml +++ b/sapl/templates/sessao/subnav.yaml @@ -14,6 +14,8 @@ url: orador_list - title: {% trans 'Ocorrências da Sessão' %} url: ocorrencia_sessao + - title: {% trans 'Retirada de Pauta'%} + url: retiradapauta_list - title: {% trans 'Expedientes' %} children: