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..b9ad11aca 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: @@ -101,18 +100,18 @@ class AutorChoiceFilterSet(SaplGenericRelationSearchFilterSet): 'tipo', 'nome', ] - def filter_q(self, queryset, value): + def filter_q(self, queryset, name,value): return SaplGenericRelationSearchFilterSet.filter_q( self, queryset, value).distinct('nome').order_by('nome') 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 ec69c50d9..36267dbc3 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -655,14 +655,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'] @@ -768,14 +767,13 @@ class RelatorioNormasVigenciaFilterSet(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'] @@ -802,19 +800,18 @@ 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): parent = super(RelatorioHistoricoTramitacaoFilterSet, self).qs 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'] @@ -842,19 +839,18 @@ 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): parent = super(RelatorioDataFimPrazoTramitacaoFilterSet, self).qs 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'] @@ -1014,13 +1010,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 @@ -1030,6 +1019,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..454cd9890 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -757,13 +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', choices=ANO_CHOICES) @@ -794,6 +787,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 +1031,13 @@ 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 +1061,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 +1092,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',