Browse Source

Automatiza criação de autor para comissão

pull/1686/head
VictorFabreF 8 years ago
parent
commit
d7e9fb6b19
  1. 38
      sapl/comissoes/forms.py
  2. 16
      sapl/comissoes/views.py
  3. 4
      sapl/materia/views.py
  4. 9
      sapl/parlamentares/views.py

38
sapl/comissoes/forms.py

@ -1,7 +1,12 @@
from django.db.models import Q from django.db.models import Q
from django import forms 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 from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato
@ -89,3 +94,34 @@ class ParticipacaoForm(forms.ModelForm):
lista = list(set(lista)) lista = list(set(lista))
return 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

16
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.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud
from sapl.materia.models import MateriaLegislativa, Tramitacao from sapl.materia.models import MateriaLegislativa, Tramitacao
from .forms import ComissaoForm
from .models import (CargoComissao, Comissao, Composicao, Participacao, from .models import (CargoComissao, Comissao, Composicao, Participacao,
Periodo, TipoComissao) Periodo, TipoComissao)
@ -100,18 +101,11 @@ class ComissaoCrud(Crud):
'data_criacao', 'data_extincao', 'ativa'] 'data_criacao', 'data_extincao', 'ativa']
ordering = '-ativa', 'sigla' ordering = '-ativa', 'sigla'
class ListView(Crud.ListView): class CreateView(Crud.CreateView):
form_class = ComissaoForm
@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)
def form_valid(self, form):
return super(Crud.CreateView, self).form_valid(form)
class MateriasTramitacaoListView(ListView): class MateriasTramitacaoListView(ListView):
template_name = "comissoes/materias_em_tramitacao.html" template_name = "comissoes/materias_em_tramitacao.html"

4
sapl/materia/views.py

@ -304,10 +304,6 @@ class OrgaoCrud(Crud):
class CreateView(Crud.CreateView): class CreateView(Crud.CreateView):
form_class = OrgaoForm form_class = OrgaoForm
# def get_success_url(self):
# return reverse('sapl.materia:orgao_list')
class TipoProposicaoCrud(CrudAux): class TipoProposicaoCrud(CrudAux):
model = TipoProposicao model = TipoProposicao
help_text = 'tipo_proposicao' help_text = 'tipo_proposicao'

9
sapl/parlamentares/views.py

@ -278,19 +278,10 @@ class FrenteCrud(CrudAux):
public = [RP_DETAIL, RP_LIST] public = [RP_DETAIL, RP_LIST]
list_field_names = ['nome', 'data_criacao', 'parlamentares'] list_field_names = ['nome', 'data_criacao', 'parlamentares']
class UpdateView(Crud.UpdateView):
form_class = FrenteForm
class CreateView(Crud.CreateView): class CreateView(Crud.CreateView):
form_class = FrenteForm form_class = FrenteForm
def form_valid(self, form): 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) return super(Crud.CreateView, self).form_valid(form)

Loading…
Cancel
Save