Repository: interlegis/sapl

Issue:
Inclusão de autoria de matéria legislativa: Filtrar nomes por tipo de autor
No 2.5, ao incluir o autor de uma matéria, o sistema apresenta os campos Tipo e Nome, com o segundo oferendo opões de acordo com o Tipo. O 3.1 está apresentando, no campo Nome, todos os possíveis, independentemente de tipo.
![captura de tela de 2017-07-10 16 02 12](https://user-images.githubusercontent.com/19169882/28035192-16e57dee-658a-11e7-8f91-375dff2fab77.png)
![captura de tela de 2017-07-10 16 07 08](https://user-images.githubusercontent.com/19169882/28035195-1c79172a-658a-11e7-9299-6e4e6bdfae72.png)


Inclusão de autoria de matéria legislativa: Filtrar nomes por tipo de autor
No 2.5, ao incluir o autor de uma matéria, o sistema apresenta os campos Tipo e Nome, com o segundo oferendo opões de acordo com o Tipo. O 3.1 está apresentando, no campo Nome, todos os possíveis, independentemente de tipo.
![captura de tela de 2017-07-10 16 02 12](https://user-images.githubusercontent.com/19169882/28035192-16e57dee-658a-11e7-8f91-375dff2fab77.png)
![captura de tela de 2017-07-10 16 07 08](https://user-images.githubusercontent.com/19169882/28035195-1c79172a-658a-11e7-9299-6e4e6bdfae72.png)




Discussion:

Resolving patch:
diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py
--- a/sapl/materia/forms.py
+++ b/sapl/materia/forms.py
@@ -13,7 +13,7 @@
 from django.core.urlresolvers import reverse
 from django.db import models, transaction
 from django.db.models import Max
-from django.forms import ModelForm, widgets
+from django.forms import ModelForm, ModelChoiceField, widgets
 from django.forms.forms import Form
 from django.forms.widgets import Select
 from django.utils.encoding import force_text
@@ -22,7 +22,7 @@
 from django.utils.translation import ugettext_lazy as _
 import django_filters
 
-from sapl.base.models import Autor
+from sapl.base.models import Autor, TipoAutor
 from sapl.comissoes.models import Comissao
 from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_PUBLIC,
                                     STATUS_TA_PRIVATE)
@@ -648,9 +648,27 @@ def clean(self):
 
 class AutoriaForm(ModelForm):
 
+    tipo_autor = ModelChoiceField(label=_('Tipo Autor'),
+                                  required=False,
+                                  queryset=
+                                  TipoAutor.objects.all().order_by('descricao'),
+                                  empty_label='Selecione',)
+
+    def __init__(self, *args, **kwargs):
+        super(AutoriaForm, self).__init__(*args, **kwargs)
+
+        row1 = to_row([('tipo_autor', 4),
+                       ('autor', 4),
+                       ('primeiro_autor', 4)])
+
+        self.helper = FormHelper()
+        self.helper.layout = Layout(
+            Fieldset(_('Autoria'),
+                     row1, form_actions(save_label='Salvar')))
+
     class Meta:
         model = Autoria
-        fields = ['autor', 'primeiro_autor']
+        fields = ['tipo_autor', 'autor', 'primeiro_autor']
 
     def clean(self):
         super(AutoriaForm, self).clean()
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -1089,6 +1089,10 @@ class AutoriaCrud(MasterDetailCrud):
     class CreateView(MasterDetailCrud.CreateView):
         form_class = AutoriaForm
 
+        @property
+        def layout_key(self):
+            return 'AutoriaCreate'
+
         def get_context_data(self, **kwargs):
             context = super(CreateView, self).get_context_data(**kwargs)
             autores_ativos = self.autores_ativos()


Test patch: