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. 27
      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.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

7
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:

2
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

27
sapl/templates/norma/normarelacionada_form.html

@ -5,23 +5,30 @@
{% block extra_js %}
<script language="Javascript">
$(document).ready(function() {
function recuperar_norma() {
var orgao = $("#id_orgao").val()
var tipo = $("#id_tipo").val()
var numero = $("#id_numero").val()
var ano = $("#id_ano").val()
if (tipo && numero && ano) {
$.get("{% url 'sapl.norma:recuperar_norma' %}",{tipo: tipo,
numero: numero,
ano: ano},
function(data, status) {
$("#id_ementa").val(data.ementa);
});
$.get(
"{% url 'sapl.norma:recuperar_norma' %}",
{
orgao: orgao,
tipo: tipo,
numero: numero,
ano: ano
},
function(data, status) {
$("#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>
{% endblock %}

Loading…
Cancel
Save