diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 11d9bfc1d..fbd5f35e1 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -733,8 +733,7 @@ class RelatorioNormasVigenciaFilterSet(django_filters.FilterSet): ano = django_filters.ChoiceFilter(required=True, label='Ano da Norma', - choices=RANGE_ANOS, - method='filter_vigencia') + choices=RANGE_ANOS) vigencia = forms.ChoiceField( label=_('Vigência'), @@ -766,11 +765,6 @@ class RelatorioNormasVigenciaFilterSet(django_filters.FilterSet): def qs(self): return qs_override_django_filter(self) - def filter_vigencia(self, qs, *args, **kwargs): - import ipdb; ipdb.set_trace() - parent = super(RelatorioNormasVigenciaFilterSet, self).qs - return parent.distinct().order_by('data') - class RelatorioPresencaSessaoFilterSet(django_filters.FilterSet): diff --git a/sapl/base/views.py b/sapl/base/views.py index ac357b61c..c2df6848c 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -1,6 +1,7 @@ +import collections +import datetime import logging import os -import collections from django.contrib.auth import get_user_model from django.contrib.auth.mixins import PermissionRequiredMixin @@ -785,12 +786,34 @@ class RelatorioNormasVigenciaView(FilterView): filterset_class = RelatorioNormasVigenciaFilterSet template_name = 'base/RelatorioNormasVigencia_filter.html' + + def get_filterset_kwargs(self, filterset_class): + super(RelatorioNormasVigenciaView, + self).get_filterset_kwargs(filterset_class) + + kwargs = {'data': self.request.GET or None} + qs = self.get_queryset().order_by('data').distinct() + if kwargs['data']: + ano = kwargs['data']['ano'] + vigencia = kwargs['data']['vigencia'] + qs = qs.filter(ano=ano) + if vigencia == 'True': + qs_dt_not_null = qs.filter(data_vigencia__isnull=True) + qs = (qs_dt_not_null | qs.filter(data_vigencia__gte=datetime.datetime.now().date())).distinct() + else: + qs = qs.filter(data_vigencia__lt=datetime.datetime.now().date()) + + kwargs.update({ + 'queryset': qs, + }) + return kwargs + + def get_context_data(self, **kwargs): context = super(RelatorioNormasVigenciaView, self).get_context_data(**kwargs) context['title'] = _('Normas por vigência') - # import ipdb; ipdb.set_trace() # Verifica se os campos foram preenchidos if not self.filterset.form.is_valid(): return context @@ -800,6 +823,7 @@ class RelatorioNormasVigenciaView(FilterView): context['show_results'] = show_results_filter_set(qr) context['ano'] = self.request.GET['ano'] + context['vigencia'] = 'Vigente' if self.request.GET['vigencia'] == 'True' else 'Não vigente' return context diff --git a/sapl/templates/base/RelatorioNormasVigencia_filter.html b/sapl/templates/base/RelatorioNormasVigencia_filter.html index 1b7fce6fa..81bc7fc62 100644 --- a/sapl/templates/base/RelatorioNormasVigencia_filter.html +++ b/sapl/templates/base/RelatorioNormasVigencia_filter.html @@ -9,40 +9,40 @@ {% if show_results %}
- {% trans 'Fazer nova pesquisa' %} + {% trans 'Fazer nova pesquisa' %}




PARÂMETROS DE PESQUISA:
 Ano: {{ ano }}
-
- {% for mes, normas in normas_mes.items %} -
- - +  Vigência: {{ vigencia }}
+ {% if object_list %} +
+
+ + + + + + + + {% for norma in object_list %} - + + - -
MatériaNorma

Mês: {{ mes }}

+ {{norma.tipo.descricao}} - {{norma.tipo.sigla}} {{norma.numero}}/{{norma.ano}} + {{norma.ementa}}
{{norma.observacao}}
- - - - - - - - - {% for n in normas %} - - - - - {% endfor %} - -
MatériaNorma
- {{n.tipo.descricao}} - {{n.tipo.sigla}} {{n.numero}}/{{n.ano}} - {{n.ementa}}
{{n.observacao}}
-
- {% endfor %} + {% endfor %} + + + {% else %} + + + + + + +
Não foi encontrada nenhuma norma com os parâmetros buscados.
+ {% endif %} {% endif %} {% endblock base_content %}