Repository: interlegis/sapl

Issue:
Adicionar no relatório de [Matérias em Tramitação ] a opção de filtro por autor também.
<!--- Forneça um resumo geral da _issue_ no título acima -->

O relatório de [Matérias em Tramitação] é muito bom, porém ficou faltando a opção de filtro por autor.

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Adicionar o filtro autor


## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Não existe o filtro autor

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->

## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1.
2.
3.
4.

## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->

## Imagens do Ocorrido
<!--- Representação visual em vídeo ou imagem do ocorrido -->
<!--- Se está descrevendo um bug poste imagens ou vídeos na reprodução do bug citado, caso se aplique -->

## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_):
* Nome e versão do navegador:
* Nome e versão do Sistema Operacional (desktop ou mobile):
* Link para o seu projeto (Caso de fork deste projeto):



Discussion:

Resolving patch:
diff --git a/sapl/base/forms.py b/sapl/base/forms.py
--- a/sapl/base/forms.py
+++ b/sapl/base/forms.py
@@ -1291,6 +1291,11 @@ class RelatorioMateriasTramitacaoFilterSet(django_filters.FilterSet):
         queryset=StatusTramitacao.objects.all(),
         label=_('Status Atual'))
 
+    materia__autores = django_filters.ModelChoiceFilter(
+        label='Autor da Matéria',
+        queryset=Autor.objects.all())
+
+
     @property
     def qs(self):
         parent = super(RelatorioMateriasTramitacaoFilterSet, self).qs
@@ -1302,7 +1307,7 @@ class Meta:
         model = MateriaEmTramitacao
         fields = ['materia__ano', 'materia__tipo',
                   'tramitacao__unidade_tramitacao_destino',
-                  'tramitacao__status']
+                  'tramitacao__status','materia__autores']
 
     def __init__(self, *args, **kwargs):
         super(RelatorioMateriasTramitacaoFilterSet, self).__init__(
@@ -1314,6 +1319,7 @@ def __init__(self, *args, **kwargs):
         row2 = to_row([('materia__tipo', 12)])
         row3 = to_row([('tramitacao__unidade_tramitacao_destino', 12)])
         row4 = to_row([('tramitacao__status', 12)])
+        row5 = to_row([('materia__autores', 12)])
 
         buttons = FormActions(
             *[
@@ -1333,7 +1339,7 @@ def __init__(self, *args, **kwargs):
         self.form.helper.form_method = 'GET'
         self.form.helper.layout = Layout(
             Fieldset(_('Pesquisa de Matéria em Tramitação'),
-                     row1, row2, row3, row4,
+                     row1, row2, row3, row4,row5,
                      buttons,)
         )
 
diff --git a/sapl/base/views.py b/sapl/base/views.py
--- a/sapl/base/views.py
+++ b/sapl/base/views.py
@@ -749,6 +749,7 @@ def get_filterset_kwargs(self, filterset_class):
             tipo_materia = data['data']['materia__tipo']
             unidade_tramitacao_destino = data['data']['tramitacao__unidade_tramitacao_destino']
             status_tramitacao = data['data']['tramitacao__status']
+            autor = data['data']['materia__autores']
 
             kwargs = {}
             if ano_materia:
@@ -759,8 +760,10 @@ def get_filterset_kwargs(self, filterset_class):
                 kwargs['tramitacao__unidade_tramitacao_destino'] = unidade_tramitacao_destino
             if status_tramitacao:
                 kwargs['tramitacao__status'] = status_tramitacao
+            if autor:
+                kwargs['materia__autores'] = autor
+            
             qs = qs.filter(**kwargs)
-
             data['queryset'] = qs
             
             self.total_resultados_tipos = num_materias_por_tipo(qs, "materia__tipo")
@@ -815,6 +818,14 @@ def get_context_data(self, **kwargs):
             )
         else:
             context['tramitacao__unidade_tramitacao_destino'] = ''
+
+        if self.request.GET['materia__autores']:
+            autor = self.request.GET['materia__autores']
+            context['materia__autor'] = (
+                str(Autor.objects.get(id=autor))
+            )
+        else:
+            context['materia__autor'] = ''
         
         context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
         context['show_results'] = show_results_filter_set(qr)


Test patch: