Browse Source

HOT-FIX: filtra norma relacionada tb por orgão

pull/3372/head
Leandro Roberto 4 years ago
parent
commit
ae06ceed0f
  1. 25
      sapl/norma/forms.py
  2. 7
      sapl/norma/views.py
  3. 2
      sapl/templates/norma/layouts.yaml
  4. 19
      sapl/templates/norma/normarelacionada_form.html

25
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.crispy_layout_mixin import form_actions, SaplFormHelper, to_row
from sapl.materia.forms import choice_anos_com_materias from sapl.materia.forms import choice_anos_com_materias
from sapl.materia.models import (MateriaLegislativa, from sapl.materia.models import (MateriaLegislativa,
TipoMateriaLegislativa) TipoMateriaLegislativa, Orgao)
from sapl.utils import (ANO_CHOICES, choice_anos_com_normas, from sapl.utils import (ANO_CHOICES, choice_anos_com_normas,
FileFieldCheckMixin, FilterOverridesMetaMixin, FileFieldCheckMixin, FilterOverridesMetaMixin,
NormaPesquisaOrderingFilter, RangeWidgetOverride, NormaPesquisaOrderingFilter, RangeWidgetOverride,
@ -338,6 +338,12 @@ class AnexoNormaJuridicaForm(FileFieldCheckMixin, ModelForm):
class NormaRelacionadaForm(ModelForm): class NormaRelacionadaForm(ModelForm):
orgao = forms.ModelChoiceField(
label='Órgão',
required=False,
queryset=Orgao.objects.all(),
empty_label='----------',
)
tipo = forms.ModelChoiceField( tipo = forms.ModelChoiceField(
label='Tipo', label='Tipo',
required=True, required=True,
@ -354,7 +360,7 @@ class NormaRelacionadaForm(ModelForm):
class Meta: class Meta:
model = NormaRelacionada model = NormaRelacionada
fields = ['tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo'] fields = ['orgao', 'tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo']
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(NormaRelacionadaForm, self).__init__(*args, **kwargs) super(NormaRelacionadaForm, self).__init__(*args, **kwargs)
@ -367,20 +373,21 @@ class NormaRelacionadaForm(ModelForm):
cleaned_data = self.cleaned_data cleaned_data = self.cleaned_data
try: try:
self.logger.debug("Tentando obter objeto NormaJuridica com numero={}, ano={}, tipo={}.".format( self.logger.debug("Tentando obter objeto NormaJuridica com numero={}, ano={}, tipo={}, orgao={}.".format(
cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'], cleaned_data['orgao']))
norma_relacionada = NormaJuridica.objects.get( norma_relacionada = NormaJuridica.objects.get(
numero=cleaned_data['numero'], numero=cleaned_data['numero'],
ano=cleaned_data['ano'], ano=cleaned_data['ano'],
tipo=cleaned_data['tipo']) tipo=cleaned_data['tipo'],
orgao=cleaned_data['orgao'])
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} não existe.".format( self.logger.info("NormaJuridica com numero={}, ano={}, tipo={}, orgao={} não existe.".format(
cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'], cleaned_data['orgao']))
msg = _('A norma a ser relacionada não existe.') msg = _('A norma a ser relacionada não existe.')
raise ValidationError(msg) raise ValidationError(msg)
else: else:
self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} obtida com sucesso.".format( self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} , orgao={} obtida com sucesso.".format(
cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'], cleaned_data['orgao']))
cleaned_data['norma_relacionada'] = norma_relacionada cleaned_data['norma_relacionada'] = norma_relacionada
return cleaned_data return cleaned_data

7
sapl/norma/views.py

@ -435,6 +435,10 @@ def recuperar_norma(request):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
username = request.user.username 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']) tipo = TipoNormaJuridica.objects.get(pk=request.GET['tipo'])
numero = request.GET['numero'] numero = request.GET['numero']
ano = request.GET['ano'] ano = request.GET['ano']
@ -444,7 +448,8 @@ def recuperar_norma(request):
.format(tipo, ano, numero)) .format(tipo, ano, numero))
norma = NormaJuridica.objects.get(tipo=tipo, norma = NormaJuridica.objects.get(tipo=tipo,
ano=ano, ano=ano,
numero=numero) numero=numero,
orgao=orgao)
response = JsonResponse({'ementa': norma.ementa, response = JsonResponse({'ementa': norma.ementa,
'id': norma.id}) 'id': norma.id})
except ObjectDoesNotExist: except ObjectDoesNotExist:

2
sapl/templates/norma/layouts.yaml

@ -62,7 +62,7 @@ TipoVinculoNormaJuridica:
NormaRelacionada: NormaRelacionada:
{% trans 'Norma Relacionada' %}: {% trans 'Norma Relacionada' %}:
- tipo numero ano - orgao tipo:4 numero:3 ano:2
- tipo_vinculo - tipo_vinculo
- ementa - ementa

19
sapl/templates/norma/normarelacionada_form.html

@ -5,23 +5,30 @@
{% block extra_js %} {% block extra_js %}
<script language="Javascript"> <script language="Javascript">
$(document).ready(function() {
function recuperar_norma() { function recuperar_norma() {
var orgao = $("#id_orgao").val()
var tipo = $("#id_tipo").val() var tipo = $("#id_tipo").val()
var numero = $("#id_numero").val() var numero = $("#id_numero").val()
var ano = $("#id_ano").val() var ano = $("#id_ano").val()
if (tipo && numero && ano) { if (tipo && numero && ano) {
$.get("{% url 'sapl.norma:recuperar_norma' %}",{tipo: tipo, $.get(
"{% url 'sapl.norma:recuperar_norma' %}",
{
orgao: orgao,
tipo: tipo,
numero: numero, numero: numero,
ano: ano}, ano: ano
},
function(data, status) { function(data, status) {
$("#id_ementa").val(data.ementa); $("#id_ementa").val(data.ementa);
});
} }
);
} }
var fields = ["#id_tipo", "#id_numero", "#id_ano"]
for (i = 0; i < fields.length; i++) {
$(fields[i]).change(recuperar_norma);
} }
$("#id_tipo, #id_numero, #id_ano, #id_orgao").change(recuperar_norma);
});
</script> </script>
{% endblock %} {% endblock %}

Loading…
Cancel
Save