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
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
|
class UsersAPIPagination(pagination.CursorPagination):
|
||||||
|
page_size_query_param = 'limit'
|
||||||
|
max_page_size = 100
|
||||||
|
|
||||||
|
|
||||||
class UsersAPI(api_mixins.GetOrCreateMixinView, HookMixin, ExceptionHandlerMixin, ModelViewSet):
|
class UsersAPI(api_mixins.GetOrCreateMixinView, HookMixin, ExceptionHandlerMixin, ModelViewSet):
|
||||||
queryset = User.objects.all()
|
queryset = User.objects.all()
|
||||||
ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined']
|
ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined']
|
||||||
|
@ -730,7 +735,7 @@ class UsersAPI(api_mixins.GetOrCreateMixinView, HookMixin, ExceptionHandlerMixin
|
||||||
filter_class = UsersFilter
|
filter_class = UsersFilter
|
||||||
filterset_class = UsersFilter
|
filterset_class = UsersFilter
|
||||||
filter_backends = [FreeTextSearchFilter] + api_settings.DEFAULT_FILTER_BACKENDS
|
filter_backends = [FreeTextSearchFilter] + api_settings.DEFAULT_FILTER_BACKENDS
|
||||||
pagination_class = pagination.CursorPagination
|
pagination_class = UsersAPIPagination
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def ordering(self):
|
def ordering(self):
|
||||||
|
|
|
@ -2544,3 +2544,15 @@ def test_find_duplicates_put(app, admin, settings):
|
||||||
app.put_json(
|
app.put_json(
|
||||||
'/api/users/find_duplicates/', params={'first_name': 'Eleonore', 'last_name': 'aeiou'}, status=405
|
'/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