diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index e0a5a0d7d..6162aef26 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -14,7 +14,7 @@ from sapl.base.models import Autor, TipoAutor from sapl.crispy_layout_mixin import form_actions, SaplFormHelper, to_row from sapl.materia.forms import choice_anos_com_materias from sapl.materia.models import (MateriaLegislativa, - TipoMateriaLegislativa) + TipoMateriaLegislativa, Orgao) from sapl.utils import (ANO_CHOICES, choice_anos_com_normas, FileFieldCheckMixin, FilterOverridesMetaMixin, NormaPesquisaOrderingFilter, RangeWidgetOverride, @@ -338,6 +338,12 @@ class AnexoNormaJuridicaForm(FileFieldCheckMixin, ModelForm): class NormaRelacionadaForm(ModelForm): + orgao = forms.ModelChoiceField( + label='Órgão', + required=False, + queryset=Orgao.objects.all(), + empty_label='----------', + ) tipo = forms.ModelChoiceField( label='Tipo', required=True, @@ -354,7 +360,7 @@ class NormaRelacionadaForm(ModelForm): class Meta: model = NormaRelacionada - fields = ['tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo'] + fields = ['orgao', 'tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo'] def __init__(self, *args, **kwargs): super(NormaRelacionadaForm, self).__init__(*args, **kwargs) @@ -367,20 +373,21 @@ class NormaRelacionadaForm(ModelForm): cleaned_data = self.cleaned_data try: - self.logger.debug("Tentando obter objeto NormaJuridica com numero={}, ano={}, tipo={}.".format( - cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) + self.logger.debug("Tentando obter objeto NormaJuridica com numero={}, ano={}, tipo={}, orgao={}.".format( + cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'], cleaned_data['orgao'])) norma_relacionada = NormaJuridica.objects.get( numero=cleaned_data['numero'], ano=cleaned_data['ano'], - tipo=cleaned_data['tipo']) + tipo=cleaned_data['tipo'], + orgao=cleaned_data['orgao']) except ObjectDoesNotExist: - self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} não existe.".format( - cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) + self.logger.info("NormaJuridica com numero={}, ano={}, tipo={}, orgao={} não existe.".format( + cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'], cleaned_data['orgao'])) msg = _('A norma a ser relacionada não existe.') raise ValidationError(msg) else: - self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} obtida com sucesso.".format( - cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) + self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} , orgao={} obtida com sucesso.".format( + cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'], cleaned_data['orgao'])) cleaned_data['norma_relacionada'] = norma_relacionada return cleaned_data diff --git a/sapl/norma/views.py b/sapl/norma/views.py index 2bdcca4b0..3f9e1247b 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -435,6 +435,10 @@ def recuperar_norma(request): logger = logging.getLogger(__name__) username = request.user.username + orgao = None + if 'orgao' in request.GET and request.GET['orgao']: + orgao = Orgao.objects.get(pk=request.GET['orgao']) + tipo = TipoNormaJuridica.objects.get(pk=request.GET['tipo']) numero = request.GET['numero'] ano = request.GET['ano'] @@ -444,7 +448,8 @@ def recuperar_norma(request): .format(tipo, ano, numero)) norma = NormaJuridica.objects.get(tipo=tipo, ano=ano, - numero=numero) + numero=numero, + orgao=orgao) response = JsonResponse({'ementa': norma.ementa, 'id': norma.id}) except ObjectDoesNotExist: diff --git a/sapl/templates/norma/layouts.yaml b/sapl/templates/norma/layouts.yaml index dfa2ef222..a957e10a6 100644 --- a/sapl/templates/norma/layouts.yaml +++ b/sapl/templates/norma/layouts.yaml @@ -62,7 +62,7 @@ TipoVinculoNormaJuridica: NormaRelacionada: {% trans 'Norma Relacionada' %}: - - tipo numero ano + - orgao tipo:4 numero:3 ano:2 - tipo_vinculo - ementa diff --git a/sapl/templates/norma/normarelacionada_form.html b/sapl/templates/norma/normarelacionada_form.html index 7fbd03c45..4b6537b8f 100644 --- a/sapl/templates/norma/normarelacionada_form.html +++ b/sapl/templates/norma/normarelacionada_form.html @@ -5,23 +5,30 @@ {% block extra_js %} {% endblock %}