Skip to content

Commit 1e7d723

Browse files
committed
Added filter backend config to api views.
This fixes the aggregationlayer filter option on the api.
1 parent 58f6321 commit 1e7d723

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

raster_aggregation/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class AggregationAreaViewSet(viewsets.ReadOnlyModelViewSet):
2020
Regular aggregation Area model view endpoint.
2121
"""
2222
serializer_class = AggregationAreaSimplifiedSerializer
23+
filter_backends = (filters.DjangoFilterBackend, )
2324
filter_fields = ('aggregationlayer', )
2425

2526
def get_queryset(self):
@@ -61,6 +62,7 @@ class AggregationAreaValueViewSet(viewsets.ReadOnlyModelViewSet):
6162
Regular aggregation Area model view endpoint.
6263
"""
6364
serializer_class = AggregationAreaValueSerializer
65+
filter_backends = (filters.DjangoFilterBackend, )
6466
filter_fields = ('aggregationlayer', )
6567

6668
def initial(self, request, *args, **kwargs):

tests/test_aggregation_api.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,25 @@ def test_value_count_for_raster_with_missing_tile(self):
144144
# Assert all data values are empty
145145
self.assertEqual(result, [{}, {}])
146146

147+
def test_filter_by_layer(self):
148+
url = reverse('aggregationareavalue-list')
149+
150+
# Setup request with fromula that will multiply the rasterlayer by itself
151+
response = self.client.get(url + '?layers=a={0}&formula=a&zoom=4&aggregationlayer={1}'.format(
152+
self.rasterlayer.id,
153+
self.agglayer.id,
154+
))
155+
156+
count = len(json.loads(response.content.strip().decode()))
157+
self.assertEqual(count, self.agglayer.aggregationarea_set.count())
158+
159+
response = self.client.get(url + '?layers=a={0}&formula=a&zoom=4&aggregationlayer={1}'.format(
160+
self.rasterlayer.id,
161+
1234, # Not existing agglayer id.
162+
))
163+
count = len(json.loads(response.content.strip().decode()))
164+
self.assertEqual(0, count)
165+
147166
def test_aggregation_null_values(self):
148167
response = self.client.get(
149168
self.url + '?layers=a={0}&formula=99*(a==NULL)%2B2*(~a==2)'.format(self.rasterlayer.id)

0 commit comments

Comments
 (0)