-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathfilters.py
34 lines (24 loc) · 886 Bytes
/
filters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from rest_framework import filters
from rest_framework_gis import filters as gis_filters
from .utils import parse_point
class DistanceToPointFilter(gis_filters.DistanceToPointFilter):
def get_filter_point(self, request):
point_string = request.query_params.get(self.point_param, None)
return parse_point(point_string)
class PropertyFilter(filters.BaseFilterBackend):
reserved_fields = (
'dist',
'point',
'tile',
'in_bbox',
'page',
'page_size',
'format'
)
def filter_queryset(self, request, queryset, view):
query_kwargs = {}
for key in request.GET:
if key not in self.reserved_fields:
field = r'current_propertyset__properties__%s' % key
query_kwargs[field] = request.GET.get(key)
return queryset.filter(**query_kwargs)