api: add page size parameter to user's API (#54514)

The query param is named `limit`.
This commit is contained in:
Benjamin Dauvergne 2021-06-03 11:08:02 +02:00
parent da8d574cc1
commit b961ec9180
2 changed files with 18 additions and 1 deletions

View File

@ -717,6 +717,11 @@ class FreeTextSearchFilter(BaseFilterBackend):
return queryset
class UsersAPIPagination(pagination.CursorPagination):
page_size_query_param = 'limit'
max_page_size = 100
class UsersAPI(api_mixins.GetOrCreateMixinView, HookMixin, ExceptionHandlerMixin, ModelViewSet):
queryset = User.objects.all()
ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined']
@ -730,7 +735,7 @@ class UsersAPI(api_mixins.GetOrCreateMixinView, HookMixin, ExceptionHandlerMixin
filter_class = UsersFilter
filterset_class = UsersFilter
filter_backends = [FreeTextSearchFilter] + api_settings.DEFAULT_FILTER_BACKENDS
pagination_class = pagination.CursorPagination
pagination_class = UsersAPIPagination
@property
def ordering(self):

View File

@ -2544,3 +2544,15 @@ def test_find_duplicates_put(app, admin, settings):
app.put_json(
'/api/users/find_duplicates/', params={'first_name': 'Eleonore', 'last_name': 'aeiou'}, status=405
)
def test_users_page_size(app, admin):
app.authorization = ('Basic', (admin.username, admin.username))
User.objects.create()
resp = app.get('/api/users/')
assert len(resp.json['results']) == 2
resp = app.get('/api/users/?limit=1')
assert len(resp.json['results']) == 1