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 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

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.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"

4
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'

9
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)

Loading…
Cancel
Save