Skip to content

Commit aee0c7f

Browse files
authored
Add page_size query_param to Reasons and Tags list views (#700)
1 parent 680789c commit aee0c7f

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

osmchadjango/changeset/tests/test_reasons_tags_views.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def setUp(self):
1818
name='suspect word',
1919
is_visible=False
2020
)
21+
SuspicionReasons.objects.create(name="another word", is_visible=True)
2122
self.user = User.objects.create_user(
2223
username='test',
2324
password='password',
@@ -33,7 +34,7 @@ def setUp(self):
3334
def test_view(self):
3435
response = self.client.get(reverse('changeset:suspicion-reasons-list'))
3536
self.assertEqual(response.status_code, 200)
36-
self.assertEqual(len(response.data.get('results')), 1)
37+
self.assertEqual(len(response.data.get('results')), 2)
3738
reason_dict = {
3839
'id': self.reason_1.id,
3940
'name': 'possible import',
@@ -44,11 +45,16 @@ def test_view(self):
4445
}
4546
self.assertIn(reason_dict, response.data.get('results'))
4647

48+
def test_pagination_params(self):
49+
response = self.client.get(reverse("changeset:suspicion-reasons-list"), {"page_size": 1})
50+
self.assertEqual(response.status_code, 200)
51+
self.assertEqual(len(response.data.get("results")), 1)
52+
4753
def test_admin_user_request(self):
4854
self.client.login(username=self.user.username, password='password')
4955
response = self.client.get(reverse('changeset:suspicion-reasons-list'))
5056
self.assertEqual(response.status_code, 200)
51-
self.assertEqual(len(response.data.get('results')), 2)
57+
self.assertEqual(len(response.data.get('results')), 3)
5258

5359

5460
class TestTagAPIListView(APITestCase):
@@ -90,6 +96,14 @@ def test_view(self):
9096
response.data.get('results')
9197
)
9298

99+
def test_pagination_params(self):
100+
Tag.objects.create(
101+
name="Bad change", description="A changeset that added bad data."
102+
)
103+
response = self.client.get(reverse("changeset:tags-list"), {"page_size": 1})
104+
self.assertEqual(response.status_code, 200)
105+
self.assertEqual(len(response.data.get("results")), 1)
106+
93107
def test_admin_user_request(self):
94108
self.client.login(username=self.user.username, password='password')
95109
response = self.client.get(reverse('changeset:tags-list'))

osmchadjango/changeset/views.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
DestroyAPIView
1818
)
1919
from rest_framework.parsers import JSONParser, MultiPartParser, FormParser
20+
from rest_framework.pagination import PageNumberPagination
2021
from rest_framework.permissions import IsAuthenticated, IsAdminUser
2122
from rest_framework.response import Response
2223
from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer
@@ -46,6 +47,12 @@ class StandardResultsSetPagination(GeoJsonPagination):
4647
max_page_size = 500
4748

4849

50+
class DefaultPagination(PageNumberPagination):
51+
page_size = 50
52+
page_size_query_param = 'page_size'
53+
max_page_size = 500
54+
55+
4956
class PaginatedCSVRenderer (CSVRenderer):
5057
results_field = 'features'
5158

@@ -157,6 +164,7 @@ def get_queryset(self):
157164
class SuspicionReasonsListAPIView(ListAPIView):
158165
"""List SuspicionReasons."""
159166
serializer_class = SuspicionReasonsSerializer
167+
pagination_class = DefaultPagination
160168

161169
def get_queryset(self):
162170
if self.request and self.request.user.is_staff:
@@ -214,6 +222,7 @@ def remove_reason_from_changesets(self, request, pk):
214222
class TagListAPIView(ListAPIView):
215223
"""List Tags."""
216224
serializer_class = TagSerializer
225+
pagination_class = DefaultPagination
217226

218227
def get_queryset(self):
219228
if self.request and self.request.user.is_staff:

0 commit comments

Comments
 (0)