Skip to content

Commit b580060

Browse files
author
Ryan P Kilby
committed
Fix django-filter 0.12 incompatibilities
1 parent 6cd3f93 commit b580060

File tree

2 files changed

+8
-19
lines changed

2 files changed

+8
-19
lines changed

rest_framework_filters/filters.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,22 +73,11 @@ class BooleanFilter(BooleanFilter):
7373
field_class = fields.BooleanField
7474

7575

76-
class InSetFilterBase(object):
77-
def filter(self, qs, value):
78-
if value in ([], (), {}, None, ''):
79-
return qs
80-
method = qs.exclude if self.exclude else qs.filter
81-
qs = method(**{self.name: value})
82-
if self.distinct:
83-
qs = qs.distinct()
84-
return qs
85-
86-
87-
class InSetNumberFilter(InSetFilterBase, NumberFilter):
76+
class InSetNumberFilter(Filter):
8877
field_class = fields.ArrayDecimalField
8978

9079

91-
class InSetCharFilter(InSetFilterBase, NumberFilter):
80+
class InSetCharFilter(Filter):
9281
field_class = fields.ArrayCharField
9382

9483

rest_framework_filters/filterset.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ def __init__(self, *args, **kwargs):
6969
filter_.setup_filterset()
7070

7171
# Add an 'isnull' filter to allow checking if the relation is empty.
72-
isnull = "%s%sisnull" % (filter_.name, LOOKUP_SEP)
73-
if isnull not in self.filters:
74-
self.filters[isnull] = filters.BooleanFilter(name=isnull)
72+
filter_name = "%s%sisnull" % (filter_.name, LOOKUP_SEP)
73+
if filter_name not in self.filters:
74+
self.filters[filter_name] = filters.BooleanFilter(name=filter_.name, lookup_type='isnull')
7575

7676
elif isinstance(filter_, filters.MethodFilter):
7777
filter_.resolve_action()
@@ -191,9 +191,9 @@ def fix_filter_field(cls, f):
191191
"""
192192
lookup_type = f.lookup_type
193193
if lookup_type == 'isnull':
194-
return filters.BooleanFilter(name=("%s%sisnull" % (f.name, LOOKUP_SEP)))
194+
return filters.BooleanFilter(name=f.name, lookup_type='isnull')
195195
if lookup_type == 'in' and type(f) == filters.NumberFilter:
196-
return filters.InSetNumberFilter(name=("%s%sin" % (f.name, LOOKUP_SEP)))
196+
return filters.InSetNumberFilter(name=f.name, lookup_type='in')
197197
if lookup_type == 'in' and type(f) == filters.CharFilter:
198-
return filters.InSetCharFilter(name=("%s%sin" % (f.name, LOOKUP_SEP)))
198+
return filters.InSetCharFilter(name=f.name, lookup_type='in')
199199
return f

0 commit comments

Comments
 (0)