Repository: interlegis/sapl

Issue:
Normas Juridicas - Criar na pesquisa um filtro de vigência
<!--- Forneça um resumo geral da _issue_ no título acima -->
Seria interessante colocar na pesquisa de Normas Jurídicas um campo "YES_NO_CHOICES " com o label Vigência:

## 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. -->
O usuário poderia pesquisar somente por normas que estão vigentes


## 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. -->
Colocando a data de final de vigência é possível filtrar as normas que não estão vigentes, porem não é possível filtrar somente as que estão vigentes.



## 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. -->

Vigência:

Não
data_vigencia < data_atual


Sim
data_vigencia > data_atual ou data_vigencia = ' '

## 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 reporduçã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:
O que acha @LeandroJatai @andreagudo @edwardoliveira  ?

Resolving patch:
diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py
--- a/sapl/norma/forms.py
+++ b/sapl/norma/forms.py
@@ -30,8 +30,7 @@ def get_esferas():
             ('M', 'Municipal')]
 
 
-YES_NO_CHOICES = [('', '---------'),
-                  (True, _('Sim')),
+YES_NO_CHOICES = [(True, _('Sim')),
                   (False, _('Não'))]
 
 ORDENACAO_CHOICES = [('', '---------'),
@@ -58,6 +57,8 @@ class NormaFilterSet(django_filters.FilterSet):
     assuntos = django_filters.ModelChoiceFilter(
         queryset=AssuntoNorma.objects.all())
 
+    vigencia = django_filters.ChoiceFilter(label='Vigência',method='filter_vigencia',choices=YES_NO_CHOICES)
+
     o = NormaPesquisaOrderingFilter(help_text='')
 
     class Meta(FilterOverridesMetaMixin):
@@ -71,7 +72,7 @@ def __init__(self, *args, **kwargs):
         row1 = to_row([('tipo', 4), ('numero', 4), ('ano', 4)])
         row2 = to_row([('ementa', 6), ('assuntos', 6)])
         row3 = to_row([('data', 6), ('data_publicacao', 6)])
-        row4 = to_row([('data_vigencia', 12)])
+        row4 = to_row([('data_vigencia', 10),('vigencia',2)])
         row5 = to_row([('o', 4), ('indexacao', 4), ('apelido', 4)])
 
         self.form.helper = SaplFormHelper()
@@ -89,6 +90,16 @@ def filter_ementa(self, queryset, name, value):
             q &= Q(ementa__icontains=t)
 
         return queryset.filter(q)
+    
+    def filter_vigencia(self, queryset, name, is_vigencia):
+        data_atual = timezone.now()
+        if is_vigencia == "True": # É vigente
+            queryset = queryset.filter((Q(data_vigencia__isnull=False) & Q(data_vigencia__gt=data_atual) | Q(data_vigencia__isnull=True)) & Q(data__lte=data_atual))
+        elif is_vigencia == "False":
+            queryset = queryset.filter(Q(data_vigencia__isnull=False) & Q(data_vigencia__lte=data_atual) | Q(data__gt=data_atual))           
+
+        return queryset
+    
 
 
 class NormaJuridicaForm(FileFieldCheckMixin, ModelForm):


Test patch: