From b73bb27ec813bedbd8797ca0dc98dc4a26c7ff81 Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Wed, 19 Dec 2018 08:58:40 -0200 Subject: [PATCH] fix #2430 --- requirements/requirements.txt | 2 +- sapl/api/forms.py | 24 ++++++------- sapl/base/forms.py | 63 +++++++++++++++++------------------ sapl/materia/forms.py | 51 ++++++++++++++-------------- sapl/norma/forms.py | 13 ++++---- sapl/protocoloadm/forms.py | 26 +++++++-------- 6 files changed, 86 insertions(+), 93 deletions(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 556c5d112..bb93e9f0e 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -9,7 +9,7 @@ django-compressor==2.0 django-crispy-forms==1.6.1 django-extensions==1.9.8 django-extra-views==0.11.0 -django-filter==0.15.3 +django-filter==1.0.0 django-floppyforms==1.6.2 django-model-utils==3.1.1 django-sass-processor==0.5.8 diff --git a/sapl/api/forms.py b/sapl/api/forms.py index c36a0c11f..9818a4d86 100644 --- a/sapl/api/forms.py +++ b/sapl/api/forms.py @@ -5,9 +5,8 @@ from django.forms.fields import CharField, MultiValueField from django.forms.widgets import MultiWidget, TextInput from django.utils import timezone from django.utils.translation import ugettext_lazy as _ -from django_filters.filters import DateFilter, MethodFilter, ModelChoiceFilter +from django_filters.filters import CharFilter, ModelChoiceFilter, DateFilter from rest_framework import serializers -from rest_framework.compat import django_filters from rest_framework.filters import FilterSet from sapl.base.models import Autor, TipoAutor @@ -16,9 +15,9 @@ from sapl.utils import generic_relations_for_model class SaplGenericRelationSearchFilterSet(FilterSet): - q = MethodFilter() + q = CharFilter(method='filter_q') - def filter_q(self, queryset, value): + def filter_q(self, queryset, name, value): query = value.split(' ') if query: @@ -87,12 +86,12 @@ class SearchForFieldField(MultiValueField): return None -class SearchForFieldFilter(django_filters.filters.MethodFilter): +class SearchForFieldFilter(CharFilter): field_class = SearchForFieldField class AutorChoiceFilterSet(SaplGenericRelationSearchFilterSet): - q = MethodFilter() + q = CharFilter(method='filter_q') tipo = ModelChoiceFilter(queryset=TipoAutor.objects.all()) class Meta: @@ -107,12 +106,12 @@ class AutorChoiceFilterSet(SaplGenericRelationSearchFilterSet): class AutorSearchForFieldFilterSet(AutorChoiceFilterSet): - q = SearchForFieldFilter() + q = SearchForFieldFilter(method='filter_q') class Meta(AutorChoiceFilterSet.Meta): pass - def filter_q(self, queryset, value): + def filter_q(self, queryset, name, value): value[0] = value[0].split(',') value[1] = value[1].split(',') @@ -128,7 +127,7 @@ class AutorSearchForFieldFilterSet(AutorChoiceFilterSet): class AutoresPossiveisFilterSet(FilterSet): logger = logging.getLogger(__name__) data_relativa = DateFilter(method='filter_data_relativa') - tipo = MethodFilter() + tipo = CharFilter(method='filter_tipo') class Meta: model = Autor @@ -137,10 +136,11 @@ class AutoresPossiveisFilterSet(FilterSet): def filter_data_relativa(self, queryset, name, value): return queryset - def filter_tipo(self, queryset, value): - + def filter_tipo(self, queryset, name, value): + try: - self.logger.debug("Tentando obter TipoAutor correspondente à pk {}.".format(value)) + self.logger.debug( + "Tentando obter TipoAutor correspondente à pk {}.".format(value)) tipo = TipoAutor.objects.get(pk=value) except: self.logger.error("TipoAutor(pk={}) inexistente.".format(value)) diff --git a/sapl/base/forms.py b/sapl/base/forms.py index ccd2c132b..028f45f3f 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -654,14 +654,13 @@ class AutorFormForAdmin(AutorForm): class RelatorioAtasFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = SessaoPlenaria fields = ['data_inicio'] @@ -690,14 +689,13 @@ class RelatorioAtasFilterSet(django_filters.FilterSet): class RelatorioPresencaSessaoFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = SessaoPlenaria fields = ['data_inicio'] @@ -724,12 +722,6 @@ class RelatorioPresencaSessaoFilterSet(django_filters.FilterSet): class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} @property def qs(self): @@ -737,6 +729,12 @@ class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet): return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero') class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['tipo', 'tramitacao__unidade_tramitacao_local', 'tramitacao__status', 'tramitacao__data_tramitacao'] @@ -764,12 +762,6 @@ class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet): class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} @property def qs(self): @@ -777,6 +769,12 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero') class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['tipo', 'tramitacao__unidade_tramitacao_local', 'tramitacao__status', 'tramitacao__data_fim_prazo'] @@ -936,13 +934,6 @@ class RelatorioMateriasPorAnoAutorTipoFilterSet(django_filters.FilterSet): class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - autoria__autor = django_filters.CharFilter(widget=forms.HiddenInput()) @property @@ -952,6 +943,12 @@ class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet): .order_by('autoria__autor', '-autoria__primeiro_autor', 'tipo', '-ano', '-numero') class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['tipo', 'data_apresentacao'] diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 39dd4c24d..6d8973340 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -757,12 +757,6 @@ class AnexadaForm(ModelForm): class MateriaLegislativaFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial Final')), - 'widget': RangeWidgetOverride} - }} ano = django_filters.ChoiceFilter(required=False, label='Ano da Matéria', @@ -794,6 +788,12 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet): o = MateriaPesquisaOrderingFilter() class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['numero', 'numero_protocolo', @@ -1032,14 +1032,15 @@ class AutoriaMultiCreateForm(Form): class AcessorioEmLoteFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} + class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['tipo', 'data_apresentacao'] @@ -1063,14 +1064,13 @@ class AcessorioEmLoteFilterSet(django_filters.FilterSet): class PrimeiraTramitacaoEmLoteFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['tipo', 'data_apresentacao'] @@ -1095,14 +1095,13 @@ class PrimeiraTramitacaoEmLoteFilterSet(django_filters.FilterSet): class TramitacaoEmLoteFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = MateriaLegislativa fields = ['tipo', 'data_apresentacao', 'tramitacao__status', 'tramitacao__unidade_tramitacao_destino'] diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index 4f6b6a563..7cd8368f7 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -41,13 +41,6 @@ ORDENACAO_CHOICES = [('', '---------'), class NormaFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - ano = django_filters.ChoiceFilter(required=False, label='Ano', choices=ANO_CHOICES) @@ -63,6 +56,12 @@ class NormaFilterSet(django_filters.FilterSet): o = NormaPesquisaOrderingFilter() class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = NormaJuridica fields = ['tipo', 'numero', 'ano', 'data', 'data_vigencia', 'data_publicacao', 'ementa', 'assuntos'] diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 0edd63a34..97cab4eee 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -66,13 +66,6 @@ class AcompanhamentoDocumentoForm(ModelForm): class ProtocoloFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateTimeField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': 'Data (%s)' % (_('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - ano = django_filters.ChoiceFilter(required=False, label='Ano', choices=ANO_CHOICES) @@ -99,6 +92,12 @@ class ProtocoloFilterSet(django_filters.FilterSet): o = AnoNumeroOrderingFilter() class Meta: + filter_overrides = {models.DateTimeField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': 'Data (%s)' % (_('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = Protocolo fields = ['numero', 'tipo_documento', @@ -154,13 +153,6 @@ class ProtocoloFilterSet(django_filters.FilterSet): class DocumentoAdministrativoFilterSet(django_filters.FilterSet): - filter_overrides = {models.DateField: { - 'filter_class': django_filters.DateFromToRangeFilter, - 'extra': lambda f: { - 'label': 'Data (%s)' % (_('Inicial - Final')), - 'widget': RangeWidgetOverride} - }} - ano = django_filters.ChoiceFilter(required=False, label='Ano', choices=ANO_CHOICES) @@ -176,6 +168,12 @@ class DocumentoAdministrativoFilterSet(django_filters.FilterSet): o = AnoNumeroOrderingFilter() class Meta: + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': 'Data (%s)' % (_('Inicial - Final')), + 'widget': RangeWidgetOverride} + }} model = DocumentoAdministrativo fields = ['tipo', 'numero',