Repository: interlegis/sapl

Issue:
Protocolo  Matéria - Vincular à Matéria Existente = SIM  (possibilidade de conflito entre dados da matéria) 
Ao assinalar que o protocolo é para vincular à matéria existente, bastaria à função obter tipo, número e ano da matéria e buscar o restante dos dados (ementa, tipo autor e autor) na matéria e informa-los na tela. No entanto, a função exige o preenchimento do campo Ementa, tipo autor e autor (como deve ser feito quando não há vinculação). Essa exigência é redundante (já que está disponível na matéria) e pode gerar conflitos entre os dados informados pelo usuário com os existentes da matéria. 


Discussion:

Resolving patch:
diff --git a/sapl/protocoloadm/urls.py b/sapl/protocoloadm/urls.py
--- a/sapl/protocoloadm/urls.py
+++ b/sapl/protocoloadm/urls.py
@@ -12,6 +12,7 @@
                                      ProtocoloMostrarView,
                                      ProtocoloPesquisaView,
                                      StatusTramitacaoAdministrativoCrud,
+                                     recuperar_materia_protocolo,
                                      TipoDocumentoAdministrativoCrud,
                                      TramitacaoAdmCrud,
                                      atualizar_numero_documento,
@@ -77,6 +78,8 @@
 
     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
--- 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 @@
 # 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 @@ def form_valid(self, form):
                                                         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())


Test patch: