diff --git a/materia/forms.py b/materia/forms.py index af3f6fa29..a67b0f5ce 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -11,7 +11,7 @@ from django.utils.translation import ugettext_lazy as _ import crispy_layout_mixin import sapl from crispy_layout_mixin import form_actions -from norma.models import LegislacaoCitada, TipoNormaJuridica +from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from sapl.settings import MAX_DOC_UPLOAD_SIZE from sapl.utils import RANGE_ANOS @@ -270,6 +270,32 @@ class LegislacaoCitadaForm(ModelForm): 'alinea', 'item'] + def clean(self): + if self.errors: + return self.errors + + cleaned_data = self.cleaned_data + + try: + norma = NormaJuridica.objects.get( + numero=cleaned_data['numero'], + ano=cleaned_data['ano'], + tipo=cleaned_data['tipo']) + except ObjectDoesNotExist: + msg = _('A norma a ser inclusa não existe no cadastro' + ' de normas.') + raise ValidationError(msg) + else: + cleaned_data['norma'] = norma + + return cleaned_data + + def save(self, commit=False): + legislacao = super(LegislacaoCitadaForm, self).save(commit) + legislacao.norma = self.cleaned_data['norma'] + legislacao.save() + return legislacao + class NumeracaoForm(ModelForm): diff --git a/materia/layouts.yaml b/materia/layouts.yaml index 09499fb22..cafaeb94f 100644 --- a/materia/layouts.yaml +++ b/materia/layouts.yaml @@ -115,10 +115,3 @@ Tramitacao: DespachoInicial: Despacho Inicial: - comissao - -# LegislacaoCitadaDetail: -# Legislação Citada: -# - norma -# - disposicoes parte livro titulo -# - capitulo secao subsecao artigo -# - paragrafo inciso alinea item diff --git a/materia/views.py b/materia/views.py index dabcc1300..4a423ea2c 100644 --- a/materia/views.py +++ b/materia/views.py @@ -89,6 +89,11 @@ class LegislacaoCitadaCrud(MasterDetailCrud): class BaseMixin(MasterDetailCrud.BaseMixin): list_field_names = ['norma', 'disposicoes'] + def resolve_url(self, suffix, args=None): + namespace = 'materia' + return reverse('%s:%s' % (namespace, self.url_name(suffix)), + args=args) + class CreateView(MasterDetailCrud.CreateView): form_class = LegislacaoCitadaForm @@ -96,17 +101,17 @@ class LegislacaoCitadaCrud(MasterDetailCrud): form_class = LegislacaoCitadaForm def get_initial(self): - self.initial['tipo_norma'] = self.object.norma.tipo.id - self.initial['numero_norma'] = self.object.norma.numero - self.initial['ano_norma'] = self.object.norma.ano + self.initial['tipo'] = self.object.norma.tipo.id + self.initial['numero'] = self.object.norma.numero + self.initial['ano'] = self.object.norma.ano return self.initial - # class DetailView(MasterDetailCrud.DetailView): - # - # @property - # def layout_key(self): - # return 'LegislacaoCitadaDetail' + class DetailView(MasterDetailCrud.DetailView): + + @property + def layout_key(self): + return 'LegislacaoCitadaDetail' class NumeracaoCrud(MasterDetailCrud): diff --git a/norma/layouts.yaml b/norma/layouts.yaml index ffb888676..63fafc5ea 100644 --- a/norma/layouts.yaml +++ b/norma/layouts.yaml @@ -35,9 +35,9 @@ LegislacaoCitada: - capitulo secao subsecao artigo - paragrafo inciso alinea item -# LegislacaoCitadaDetail: -# Legislação Citada: -# - norma -# - disposicoes parte livro titulo -# - capitulo secao subsecao artigo -# - paragrafo inciso alinea item +LegislacaoCitadaDetail: + Legislação Citada: + - norma + - disposicoes parte livro titulo + - capitulo secao subsecao artigo + - paragrafo inciso alinea item