diff --git a/materia/forms.py b/materia/forms.py index 8ca7c3023..e6be32d9c 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -15,9 +15,10 @@ from norma.models import LegislacaoCitada, TipoNormaJuridica from sapl.settings import MAX_DOC_UPLOAD_SIZE from sapl.utils import RANGE_ANOS -from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial, - DocumentoAcessorio, MateriaLegislativa, Numeracao, - Proposicao, Relatoria, TipoMateriaLegislativa, Tramitacao) +from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, + DespachoInicial, DocumentoAcessorio, MateriaLegislativa, + Numeracao, Proposicao, Relatoria, TipoMateriaLegislativa, + Tramitacao) ANO_CHOICES = [('', '---------')] + RANGE_ANOS @@ -559,8 +560,6 @@ class DespachoInicialForm(ModelForm): if self.errors: return self.errors - cleaned_data = self.cleaned_data - if DespachoInicial.objects.filter( materia=self.instance.materia, comissao=self.cleaned_data['comissao'], @@ -569,3 +568,23 @@ class DespachoInicialForm(ModelForm): raise ValidationError(msg) return self.cleaned_data + + +class AutoriaForm(ModelForm): + + class Meta: + model = Autoria + fields = ['autor', 'partido', 'primeiro_autor'] + + def clean(self): + if self.errors: + return self.errors + + if Autoria.objects.filter( + materia=self.instance.materia, + autor=self.cleaned_data['autor'], + ).exists(): + msg = _('Esse Autor já foi cadastrado.') + raise ValidationError(msg) + + return self.cleaned_data diff --git a/materia/views.py b/materia/views.py index 56e2773e7..430946edc 100644 --- a/materia/views.py +++ b/materia/views.py @@ -24,7 +24,7 @@ from crud.masterdetail import MasterDetailCrud from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from sapl.utils import get_base_url -from .forms import (AcompanhamentoMateriaForm, AnexadaForm, +from .forms import (AcompanhamentoMateriaForm, AnexadaForm, AutoriaForm, DespachoInicialForm, DocumentoAcessorioForm, LegislacaoCitadaForm, MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm, RelatoriaForm, @@ -56,7 +56,17 @@ StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao') UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') TramitacaoCrud = Crud.build(Tramitacao, '') -AutoriaCrud = MasterDetailCrud.build(Autoria, 'materia', '') + +class AutoriaCrud(MasterDetailCrud): + model = Autoria + parent_field = 'materia' + help_path = '' + + class CreateView(MasterDetailCrud.CreateView): + form_class = AutoriaForm + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = AutoriaForm class DespachoInicialCrud(MasterDetailCrud):