diff --git a/materia/forms.py b/materia/forms.py index c03846d06..c986c423c 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -15,9 +15,9 @@ 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, DocumentoAcessorio, - MateriaLegislativa, Numeracao, Proposicao, Relatoria, - TipoMateriaLegislativa, Tramitacao) +from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial, + DocumentoAcessorio, MateriaLegislativa, Numeracao, + Proposicao, Relatoria, TipoMateriaLegislativa, Tramitacao) ANO_CHOICES = [('', '---------')] + RANGE_ANOS @@ -542,3 +542,25 @@ def filtra_tramitacao_destino_and_status(status, destino): status=status, unidade_tramitacao_destino=destino).distinct().values_list( 'materia_id', flat=True) + + +class DespachoInicialForm(ModelForm): + + class Meta: + model = DespachoInicial + fields = ['comissao'] + + def clean(self): + if self.errors: + return self.errors + + cleaned_data = self.cleaned_data + + if DespachoInicial.objects.filter( + materia=self.instance.materia, + comissao=self.cleaned_data['comissao'], + ).exists(): + msg = _('Esse Despacho já foi cadastrado.') + raise ValidationError(msg) + + return self.cleaned_data diff --git a/materia/views.py b/materia/views.py index e59e7da6d..0eeb7f268 100644 --- a/materia/views.py +++ b/materia/views.py @@ -25,9 +25,10 @@ from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from sapl.utils import get_base_url from .forms import (AcompanhamentoMateriaForm, AnexadaForm, - DocumentoAcessorioForm, LegislacaoCitadaForm, - MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm, - RelatoriaForm, TramitacaoForm, filtra_tramitacao_destino, + DespachoInicialForm, DocumentoAcessorioForm, + LegislacaoCitadaForm, MateriaLegislativaFilterSet, + NumeracaoForm, ProposicaoForm, RelatoriaForm, + TramitacaoForm, filtra_tramitacao_destino, filtra_tramitacao_destino_and_status, filtra_tramitacao_status) from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, @@ -57,7 +58,18 @@ UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') TramitacaoCrud = Crud.build(Tramitacao, '') AutoriaCrud = MasterDetailCrud.build(Autoria, 'materia', '') -DespachoInicialCrud = MasterDetailCrud.build(DespachoInicial, 'materia', '') + + +class DespachoInicialCrud(MasterDetailCrud): + model = DespachoInicial + parent_field = 'materia' + help_path = '' + + class CreateView(MasterDetailCrud.CreateView): + form_class = DespachoInicialForm + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = DespachoInicialForm class AnexadaCrud(MasterDetailCrud):