From 35eca2afbad9e39e826e5a6b72b5f760855a1905 Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Fri, 16 Nov 2018 18:50:20 -0200 Subject: [PATCH] form update bugging, form create and view ok --- sapl/sessao/forms.py | 28 +++++++++++++------ .../migrations/0031_auto_20181116_1849.py | 21 ++++++++++++++ sapl/sessao/models.py | 3 +- sapl/sessao/views.py | 13 ++++++++- sapl/templates/sessao/layouts.yaml | 8 +++++- 5 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 sapl/sessao/migrations/0031_auto_20181116_1849.py diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index de8f01a82..71a1f3474 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -233,17 +233,28 @@ class RetiradaPautaForm(ModelForm): q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria']) ordens = OrdemDia.objects.filter(q) expedientes = ExpedienteMateria.objects.filter(q) + retiradas_ordem = [r.ordem for r in RetiradaPauta.objects.filter(q, ordem__in=ordens)] + retiradas_expediente = [r.expediente for r in RetiradaPauta.objects.filter(q, expediente__in=expedientes)] + setOrdem = set(ordens) - set(retiradas_ordem) + setExpediente = set(expedientes) - set(retiradas_expediente) super(RetiradaPautaForm, self).__init__( *args, **kwargs) + + if self.instance: + setOrdem = set(ordens) + setExpediente = set(expedientes) + + + presencas = SessaoPlenariaPresenca.objects.filter( q).order_by('parlamentar__nome_parlamentar') presentes = [p.parlamentar for p in presencas] self.fields['expediente'].choices = [ - (None, "------------")] + [(e.id, e.materia) for e in expedientes] + (None, "------------")] + [(e.id, e.materia) for e in setExpediente] self.fields['ordem'].choices = [ - (None, "------------")] + [(o.id, o.materia) for o in ordens] + (None, "------------")] + [(o.id, o.materia) for o in setOrdem] self.fields['parlamentar'].choices = [ (None, "------------")] + [(p.id, p) for p in presentes] @@ -254,12 +265,6 @@ class RetiradaPautaForm(ModelForm): if not self.is_valid(): return self.cleaned_data - if self.cleaned_data['ordem']: - self.cleaned_data['materia'] = self.cleaned_data['ordem'].materia - elif self.cleaned_data['expediente']: - self.cleaned_data['materia'] = self.cleaned_data['expediente'].materia - - sessao_plenaria = self.instance.sessao_plenaria if self.cleaned_data['data'] < sessao_plenaria.data_inicio: raise ValidationError(_("Data de retirada de pauta anterior à abertura da Sessão")) @@ -268,6 +273,13 @@ class RetiradaPautaForm(ModelForm): return self.cleaned_data + def save(self, commit=False): + retirada = super(RetiradaPautaForm, self).save(commit=False) + if retirada.ordem: + retirada.materia = retirada.ordem.materia + elif retirada.expediente: + retirada.materia = retirada.expediente.materia + retirada.save() class BancadaForm(ModelForm): diff --git a/sapl/sessao/migrations/0031_auto_20181116_1849.py b/sapl/sessao/migrations/0031_auto_20181116_1849.py new file mode 100644 index 000000000..61ea74b9f --- /dev/null +++ b/sapl/sessao/migrations/0031_auto_20181116_1849.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-16 20:49 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0030_auto_20181113_1149'), + ] + + operations = [ + migrations.AlterField( + model_name='retiradapauta', + name='materia', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='materia.MateriaLegislativa', verbose_name='Matéria'), + ), + ] diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index b225a2036..8cc162a05 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -678,7 +678,8 @@ class JustificativaAusencia(models.Model): class RetiradaPauta(models.Model): materia = models.ForeignKey(MateriaLegislativa, - on_delete=models.CASCADE) + on_delete=models.CASCADE, + verbose_name=_('Matéria')) sessao_plenaria = models.ForeignKey(SessaoPlenaria, on_delete=models.CASCADE, verbose_name=_('Sessão Plenária'), diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 37c2f1b76..6a341dc5d 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -3239,4 +3239,15 @@ class RetiradaPautaCrud(MasterDetailCrud): def get_success_url(self): return reverse('sapl.sessao:retiradapauta_list', - kwargs={'pk': self.kwargs['pk']}) \ No newline at end of file + kwargs={'pk': self.kwargs['pk']}) + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = RetiradaPautaForm + layout_key = None + + def get_initial(self): + sessao_plenaria = RetiradaPauta.objects.get(id=self.kwargs['pk']).sessao_plenaria + return {'sessao_plenaria': sessao_plenaria} + + class DeleteView(MasterDetailCrud.DeleteView): + pass diff --git a/sapl/templates/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml index 4ddfd1782..55e0db570 100644 --- a/sapl/templates/sessao/layouts.yaml +++ b/sapl/templates/sessao/layouts.yaml @@ -91,7 +91,7 @@ TipoJustificativa: JustificativaAusencia: {% trans 'Justificativa de Ausência' %}: - - parlamentar + - parlamentar - data hora - upload_anexo - tipo_ausencia @@ -103,3 +103,9 @@ JustificativaAusencia: TipoRetiradaPauta: {% trans 'Tipo Retirada Pauta'%}: - descricao + +RetiradaPauta: + {% trans 'Retirada de Pauta' %}: + - tipo_de_retirada materia + - data parlamentar + - observacao