Skip to content

Commit 4fd4d35

Browse files
author
Ryan P Kilby
committed
Remove caching functionality from filter backend.
- The caching may have exhibited some race conditions when used in a multi-threaded environment. - The caching should no longer be necessary, as related filter setup should be significantly cheaper (hopefully).
1 parent 55e701f commit 4fd4d35

File tree

1 file changed

+0
-43
lines changed

1 file changed

+0
-43
lines changed

rest_framework_filters/backends.py

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,7 @@
1-
from copy import deepcopy
21

32
import rest_framework.filters
4-
from rest_framework.compat import django_filters
5-
63
from .filterset import FilterSet
74

85

9-
106
class DjangoFilterBackend(rest_framework.filters.DjangoFilterBackend):
11-
"""
12-
A version of `DjangoFilterBackend` that caches repeated filter classes
13-
and uses our FilterSet by default.
14-
"""
157
default_filter_set = FilterSet
16-
17-
_filter_instance_cache = {}
18-
19-
def _setup_filter_instance(self, _filter, query_params, queryset=None):
20-
_filter.data = query_params or {}
21-
_filter.is_bound = query_params is not None
22-
23-
if hasattr(_filter, '_qs'):
24-
del _filter._qs
25-
if hasattr(_filter, '_form'):
26-
del _filter._form
27-
if hasattr(_filter, '_ordering_field'):
28-
del _filter._ordering_field
29-
30-
if queryset is None:
31-
queryset = _filter._meta.model._default_manager.all()
32-
_filter.queryset = queryset
33-
# propagate the model being used through the filters
34-
for f in _filter.filters.values():
35-
f.model = _filter._meta.model
36-
37-
def filter_queryset(self, request, queryset, view):
38-
filter_class = self.get_filter_class(view, queryset)
39-
40-
if filter_class:
41-
if filter_class in self._filter_instance_cache:
42-
_filter = self._filter_instance_cache[filter_class]
43-
self._setup_filter_instance(_filter, request.query_params, queryset=queryset)
44-
else:
45-
_filter = filter_class(request.query_params, queryset=queryset)
46-
self._filter_instance_cache[filter_class] = _filter
47-
48-
return _filter.qs
49-
50-
return queryset

0 commit comments

Comments
 (0)