Repository: interlegis/sapl

Issue:
Adicionar pesquisa por autor na pesquisa das norma jurídicas.
<!--- Atualmente é possível adicinar autores as normas cadastradas no SAPL, com isso surge outra demanda apresentada pelos nossos nobres vereadores, que é que seja possível pesquisar normas "por autor", da mesma forma que é feito em matérias legislativas. -->

Atualmente é possível adicinar autores as normas cadastradas no SAPL, com isso surge outra demanda apresentada pelos nossos nobres vereadores, que é que seja possível pesquisar normas "por autor", da mesma forma que é feito em matérias legislativas

## Comportamento Esperado
<!--- Que o usuário anônimo, estando na página https://sapl.cidade.uf.leg.br/norma/pesquisar, possa filtrar as normas cadastradas por autor. -->
Que o usuário anônimo, estando na página https://sapl.cidade.uf.leg.br/norma/pesquisar, possa filtrar as normas cadastradas por autor

## Comportamento Atual
<!--- Atualmente, não existe esta possibilidade de filtro "por autor"  na página https://sapl.cidade.uf.leg.br/norma/pesquisar -->
 Atualmente, não existe esta possibilidade de filtro "por autor"  na página https://sapl.cidade.uf.leg.br/norma/pesquisar


## Contexto
<!--- Existe em algumas casas legislativas do país, a tendência de se atribuir a autoria da norma ao parlamentar que a elaborou inicialmente. Sendo assim estes parlamentares necessitam de que esta informação seja facilmente pesquisável por todos os usuários do SAPL-->

 Existe em algumas casas legislativas do país, a tendência de se atribuir a autoria da norma ao parlamentar que a elaborou inicialmente. Sendo assim estes parlamentares necessitam de que esta informação seja facilmente pesquisável por todos os usuários do SAPL

## 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_): Release: 3.1.162-RC12
* Nome e versão do navegador: Chrome 96.0.4664.9
* Nome e versão do Sistema Operacional (desktop ou mobile): Windows 10
* Link para o seu projeto (Caso de fork deste projeto):



Discussion:

Resolving patch:
diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py
--- a/sapl/norma/forms.py
+++ b/sapl/norma/forms.py
@@ -1,6 +1,6 @@
 import logging
 
-from crispy_forms.layout import Fieldset, Layout, HTML
+from crispy_forms.layout import (Button, Fieldset, HTML, Layout)
 from django import forms
 from django.core.exceptions import ObjectDoesNotExist, ValidationError
 from django.db import models
@@ -15,7 +15,8 @@
 from sapl.materia.forms import choice_anos_com_materias
 from sapl.materia.models import (MateriaLegislativa,
                                  TipoMateriaLegislativa, Orgao)
-from sapl.utils import (ANO_CHOICES,  choice_anos_com_normas,
+from sapl.parlamentares.models import Partido
+from sapl.utils import (autor_label, autor_modal, ANO_CHOICES,  choice_anos_com_normas,
                         FileFieldCheckMixin, FilterOverridesMetaMixin,
                         NormaPesquisaOrderingFilter, RangeWidgetOverride,
                         validar_arquivo)
@@ -80,8 +81,13 @@ class NormaFilterSet(django_filters.FilterSet):
     assuntos = django_filters.ModelChoiceFilter(
         queryset=AssuntoNorma.objects.all())
 
-    autorianorma__autor = django_filters.CharFilter(method='filter_autoria')
-    autorianorma__primeiro_autor = django_filters.CharFilter(method='filter_autoria')
+    autorianorma__autor = django_filters.CharFilter(widget=forms.HiddenInput())
+    autorianorma__primeiro_autor = django_filters.BooleanFilter(
+        required=False,
+        label=_('Primeiro Autor'))
+    autorianorma__autor__parlamentar_set__filiacao__partido = django_filters.ModelChoiceFilter(
+        queryset=Partido.objects.all(),
+        label=_('Normas por Partido'))
 
     o = NormaPesquisaOrderingFilter(help_text='')
 
@@ -89,22 +95,39 @@ class Meta(FilterOverridesMetaMixin):
         model = NormaJuridica
         fields = ['orgao', 'tipo', 'numero', 'ano', 'data',
                   'data_vigencia', 'data_publicacao', 'ementa', 'assuntos',
-                  'autorianorma__autor', 'autorianorma__primeiro_autor']
+                  'autorianorma__autor', 'autorianorma__primeiro_autor', 'autorianorma__autor__tipo']
 
     def __init__(self, *args, **kwargs):
         super(NormaFilterSet, self).__init__(*args, **kwargs)
+        self.filters['autorianorma__autor__tipo'].label = _('Tipo de Autor')
 
         row1 = to_row([('tipo', 4), ('numero', 4), ('ano', 4)])
         row2 = to_row([('data', 6), ('data_publicacao', 6)])
         row3 = to_row([('ementa', 6), ('assuntos', 6)])
         row4 = to_row([('data_vigencia', 6), ('orgao', 6), ])
         row5 = to_row([('o', 6), ('indexacao', 6)])
+        row6 = to_row([
+            ('autorianorma__autor', 0),
+            (Button('pesquisar',
+                    'Pesquisar Autor',
+                    css_class='btn btn-primary btn-sm'), 2),
+            (Button('limpar',
+                    'Limpar Autor',
+                    css_class='btn btn-primary btn-sm'), 2),
+            ('autorianorma__primeiro_autor', 2),
+            ('autorianorma__autor__tipo', 3),
+            ('autorianorma__autor__parlamentar_set__filiacao__partido', 3)
+        ])
 
         self.form.helper = SaplFormHelper()
         self.form.helper.form_method = 'GET'
         self.form.helper.layout = Layout(
             Fieldset(_('Pesquisa de Norma'),
                      row1, row2, row3, row4, row5,
+            Fieldset(_('Pesquisa Avançada'),
+                     row6,
+                     HTML(autor_label),
+                     HTML(autor_modal)),
                      form_actions(label='Pesquisar'))
         )
 


Test patch: