From d7e9fb6b19dfefe5c1409da108f36438d5a8a128 Mon Sep 17 00:00:00 2001 From: VictorFabreF Date: Thu, 1 Feb 2018 15:04:17 -0200 Subject: [PATCH] =?UTF-8?q?Automatiza=20cria=C3=A7=C3=A3o=20de=20autor=20p?= =?UTF-8?q?ara=20comiss=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/comissoes/forms.py | 38 ++++++++++++++++++++++++++++++++++++- sapl/comissoes/views.py | 16 +++++----------- sapl/materia/views.py | 4 ---- sapl/parlamentares/views.py | 9 --------- 4 files changed, 42 insertions(+), 25 deletions(-) diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py index f5075ef07..b54da78bf 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -1,7 +1,12 @@ from django.db.models import Q from django import forms +from django.core.exceptions import ValidationError +from django.contrib.contenttypes.models import ContentType +from django.db import transaction +from django.utils.translation import ugettext_lazy as _ -from sapl.comissoes.models import Participacao, Composicao +from sapl.base.models import Autor, TipoAutor +from sapl.comissoes.models import Participacao, Composicao, Comissao from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato @@ -89,3 +94,34 @@ class ParticipacaoForm(forms.ModelForm): lista = list(set(lista)) return lista + +class ComissaoForm(forms.ModelForm): + + class Meta: + model = Comissao + fields = '__all__' + + def clean(self): + super(ComissaoForm, self).clean() + + if self.cleaned_data['data_extincao']: + if (self.cleaned_data['data_extincao'] < + self.cleaned_data['data_criacao']): + msg = _('Data de extinção não pode ser menor que a de criação') + raise ValidationError(msg) + return self.cleaned_data + + @transaction.atomic + def save(self, commit=True): + comissao = super(ComissaoForm, self).save(commit) + content_type = ContentType.objects.get_for_model(Comissao) + object_id = comissao.pk + tipo = TipoAutor.objects.get(descricao='Comissão') + nome = comissao.sigla+' - '+comissao.nome + Autor.objects.create( + content_type=content_type, + object_id=object_id, + tipo=tipo, + nome=nome + ) + return comissao diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py index 147d65cc2..c84bb6b4a 100644 --- a/sapl/comissoes/views.py +++ b/sapl/comissoes/views.py @@ -8,6 +8,7 @@ from sapl.comissoes.forms import ParticipacaoForm from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud from sapl.materia.models import MateriaLegislativa, Tramitacao +from .forms import ComissaoForm from .models import (CargoComissao, Comissao, Composicao, Participacao, Periodo, TipoComissao) @@ -100,18 +101,11 @@ class ComissaoCrud(Crud): 'data_criacao', 'data_extincao', 'ativa'] ordering = '-ativa', 'sigla' - class ListView(Crud.ListView): - - @xframe_options_exempt - def get(self, request, *args, **kwargs): - return super().get(request, *args, **kwargs) - - class DetailView(Crud.DetailView): - - @xframe_options_exempt - def get(self, request, *args, **kwargs): - return super().get(request, *args, **kwargs) + class CreateView(Crud.CreateView): + form_class = ComissaoForm + def form_valid(self, form): + return super(Crud.CreateView, self).form_valid(form) class MateriasTramitacaoListView(ListView): template_name = "comissoes/materias_em_tramitacao.html" diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 668b9809d..289976beb 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -304,10 +304,6 @@ class OrgaoCrud(Crud): class CreateView(Crud.CreateView): form_class = OrgaoForm - # def get_success_url(self): - # return reverse('sapl.materia:orgao_list') - - class TipoProposicaoCrud(CrudAux): model = TipoProposicao help_text = 'tipo_proposicao' diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index ebfc4b788..60993bc11 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -278,19 +278,10 @@ class FrenteCrud(CrudAux): public = [RP_DETAIL, RP_LIST] list_field_names = ['nome', 'data_criacao', 'parlamentares'] - class UpdateView(Crud.UpdateView): - form_class = FrenteForm - class CreateView(Crud.CreateView): form_class = FrenteForm def form_valid(self, form): - """ - Reimplementa form_valid devido ao save de ParlamentarCreateForm - ser específico, sendo necessário isolar padrão do crud que aciona - form.save(commit=False) para registrar dados de auditoria se - o model implementá-los, bem como de container se também implement. - """ return super(Crud.CreateView, self).form_valid(form)