diff --git a/sapl/protocoloadm/urls.py b/sapl/protocoloadm/urls.py index 223c38014..8ed9216f2 100644 --- a/sapl/protocoloadm/urls.py +++ b/sapl/protocoloadm/urls.py @@ -12,6 +12,7 @@ from sapl.protocoloadm.views import (AnularProtocoloAdmView, ProtocoloMostrarView, ProtocoloPesquisaView, StatusTramitacaoAdministrativoCrud, + recuperar_materia_protocolo, TipoDocumentoAdministrativoCrud, TramitacaoAdmCrud, atualizar_numero_documento, @@ -77,6 +78,8 @@ urlpatterns_protocolo = [ url(r'^protocoloadm/atualizar_numero_documento$', atualizar_numero_documento, name='atualizar_numero_documento'), + url(r'^protocoloadm/recuperar-materia', + recuperar_materia_protocolo, name='recuperar_materia_protocolo'), ] diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 67d43fe51..4e4063ba6 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -1,6 +1,7 @@ from braces.views import FormValidMessageMixin from django.contrib import messages +from django.contrib.auth.decorators import permission_required from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist @@ -45,6 +46,24 @@ TipoDocumentoAdministrativoCrud = CrudAux.build( # FIXME precisa de uma chave diferente para o layout # ProtocoloMateriaCrud = Crud.build(Protocolo, '') +@permission_required('protocoloadm.add_protocolo') +def recuperar_materia_protocolo(request): + tipo = request.GET.get('tipo') + ano = request.GET.get('ano') + numero = request.GET.get('numero') + try: + materia = MateriaLegislativa.objects.get( + tipo=tipo, ano=ano,numero=numero) + autoria = materia.autoria_set.first() + content = {'ementa': materia.ementa.strip(), + 'ano':materia.ano, 'numero':materia.numero} + if autoria: + content.update({'autor': autoria.autor.pk, + 'tipo_autor':autoria.autor.tipo.pk}) + response = JsonResponse(content) + except Exception as e: + response = JsonResponse({'error':e}) + return response def doc_texto_integral(request, pk): can_see = True @@ -782,4 +801,4 @@ class DesvincularMateriaView(PermissionRequiredMixin, FormView): tipo=form.cleaned_data['tipo']) materia.numero_protocolo = None materia.save() - return redirect(self.get_success_url()) \ No newline at end of file + return redirect(self.get_success_url()) diff --git a/sapl/templates/protocoloadm/protocolar_materia.html b/sapl/templates/protocoloadm/protocolar_materia.html index ca172eb92..db3785bd6 100644 --- a/sapl/templates/protocoloadm/protocolar_materia.html +++ b/sapl/templates/protocoloadm/protocolar_materia.html @@ -26,6 +26,36 @@ } $(document).ready(function() { + function busca_ementa() { + var vincular_materia = $("#id_vincular_materia_1").prop("checked"); + var ano_materia = $("#id_ano_materia").val(); + var numero_materia = $("#id_numero_materia").val(); + var tipo_materia = $("#id_tipo_materia").val(); + var json_data = { + ano : ano_materia, + numero : numero_materia, + tipo : tipo_materia + } + if (vincular_materia === true && ano_materia !== undefined && + numero_materia !== undefined && numero_materia !== "") { + $.getJSON("/protocoloadm/recuperar-materia", json_data, function(data){ + if (data) { + if (data['error'] === undefined){ + $('#id_assunto_ementa').val(data['ementa']); + if (data['autor'] !== undefined) { + $('#id_autor').val(data['autor']); + $('#id_tipo_autor').val(data['tipo_autor']); + + } + } + } + }) + } + }; + $("#id_ano_materia").blur(busca_ementa); + $("#id_numero_materia").blur(busca_ementa); + $("#id_tipo_materia").change(busca_ementa); + $("#id_tipo_autor").change(function() { var tipo_selecionado = $("#id_tipo_autor").val(); var autor_selecionado = $("#id_autor").val(); @@ -51,6 +81,7 @@ }); } }); + }); {% endblock %}