Skip to content

Commit 050108b

Browse files
author
Ryan P Kilby
authored
Migrate to new DRF FilterSet and backend (#112)
1 parent 975bf9b commit 050108b

File tree

7 files changed

+10
-33
lines changed

7 files changed

+10
-33
lines changed

rest_framework_filters/backends.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11

22
from django.template import loader
33
from rest_framework import compat
4-
import rest_framework.filters
4+
from django_filters.rest_framework import backends
55

66
from .filterset import FilterSet
77

88

9-
class DjangoFilterBackend(rest_framework.filters.DjangoFilterBackend):
9+
class DjangoFilterBackend(backends.DjangoFilterBackend):
1010
default_filter_set = FilterSet
1111

1212
def filter_queryset(self, request, queryset, view):

rest_framework_filters/fields.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@
22
import warnings
33
from django import forms
44

5-
from django_filters.widgets import BooleanWidget
6-
7-
8-
class BooleanField(forms.BooleanField):
9-
widget = BooleanWidget
10-
115

126
class ArrayDecimalField(forms.DecimalField):
137
def __init__(self, *args, **kwargs):

rest_framework_filters/filters.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import warnings
55
from django.utils import six
66

7-
from django_filters.filters import *
7+
from django_filters.rest_framework.filters import *
88

99
from . import fields
1010

@@ -52,12 +52,6 @@ class AllLookupsFilter(Filter):
5252
# Fixed-up versions of some of the default filters
5353
###################################################
5454

55-
# This class is necessary, as directly django-filter's BooleanFilter
56-
# is using the incorrect form widget.
57-
class BooleanFilter(BooleanFilter):
58-
field_class = fields.BooleanField
59-
60-
6155
class InSetNumberFilter(Filter):
6256
field_class = fields.ArrayDecimalField
6357

rest_framework_filters/filterset.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
import copy
66
import warnings
77

8-
from django.db import models
98
from django.db.models.constants import LOOKUP_SEP
109
from django.db.models.fields.related import ForeignObjectRel
1110
from django.utils import six
1211

13-
from django_filters import filterset
12+
from django_filters import filterset, rest_framework
1413

1514
from . import filters
1615
from . import utils
@@ -93,19 +92,7 @@ def related_filters(self):
9392
return self._related_filters
9493

9594

96-
class FilterSet(six.with_metaclass(FilterSetMetaclass, filterset.FilterSet)):
97-
filter_overrides = {
98-
# uses API-friendly django_filters.BooleanWidget
99-
models.BooleanField: {
100-
'filter_class': filters.BooleanFilter,
101-
},
102-
103-
# In order to support ISO-8601 -- which is the default output for
104-
# DRF -- we need to use django-filter's IsoDateTimeFilter
105-
models.DateTimeField: {
106-
'filter_class': filters.IsoDateTimeFilter,
107-
},
108-
}
95+
class FilterSet(six.with_metaclass(FilterSetMetaclass, rest_framework.FilterSet)):
10996
_subset_cache = {}
11097

11198
def __init__(self, *args, **kwargs):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def get_package_data(package):
4343
zip_safe=False,
4444
install_requires=[
4545
'djangorestframework',
46-
'django-filter>=0.14.0',
46+
'django-filter>=0.15.0',
4747
],
4848
classifiers=[
4949
'Development Status :: 5 - Production/Stable',

tests/test_deprecations.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,9 @@ class Meta:
7373
order_by = 'username'
7474
fields = []
7575

76-
F().qs
77-
self.assertEqual(len(w), 1)
76+
# we should get a deprecation warning from django-filter and
77+
# a compatibility warning from django-rest-framework-filters
78+
self.assertEqual(len(w), 2)
7879
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
7980

8081

tests/testapp/filters.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class DFUserFilter(django_filters.FilterSet):
1515

1616
class Meta:
1717
model = User
18+
fields = '__all__'
1819

1920

2021
class NoteFilterWithAll(FilterSet):

0 commit comments

Comments
 (0)