api: add page size parameter to user's API (#54514)
The query param is named `limit`.
This commit is contained in:
parent
da8d574cc1
commit
b961ec9180
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue