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 %}
| Matéria | +Norma | +|
|---|---|---|
Mês: {{ mes }} |
+ + {{norma.tipo.descricao}} - {{norma.tipo.sigla}} {{norma.numero}}/{{norma.ano}} + | +{{norma.ementa}} {{norma.observacao}} |
| Matéria | -Norma | -
|---|---|
| - {{n.tipo.descricao}} - {{n.tipo.sigla}} {{n.numero}}/{{n.ano}} - | -{{n.ementa}} {{n.observacao}} |
-
| Não foi encontrada nenhuma norma com os parâmetros buscados. | +
|---|