Skip to content

Commit

Permalink
Update check for pagination settings, update test
Browse files Browse the repository at this point in the history
  • Loading branch information
TheSuperiorStanislav committed Aug 21, 2024
1 parent a9d25af commit 1ada7c7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
8 changes: 5 additions & 3 deletions rest_framework/checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,16 @@ def pagination_system_check(app_configs, **kwargs):
errors = []
# Use of default page size setting requires a default Paginator class
from rest_framework.settings import api_settings
if api_settings.PAGE_SIZE and not api_settings.DEFAULT_PAGINATION_CLASS:
if (
api_settings.PAGE_SIZE or api_settings.MAX_PAGE_SIZE
) and not api_settings.DEFAULT_PAGINATION_CLASS:
errors.append(
Warning(
"You have specified a default PAGE_SIZE pagination rest_framework setting, "
"You have specified a default PAGE_SIZE pagination or MAX_PAGE_SIZE limit rest_framework setting, "
"without specifying also a DEFAULT_PAGINATION_CLASS.",
hint="The default for DEFAULT_PAGINATION_CLASS is None. "
"In previous versions this was PageNumberPagination. "
"If you wish to define PAGE_SIZE globally whilst defining "
"If you wish to define PAGE_SIZE or MAX_PAGE_SIZE globally whilst defining "
"pagination_class on a per-view basis you may silence this check.",
id="rest_framework.W001"
)
Expand Down
9 changes: 9 additions & 0 deletions tests/test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def get_pagination_error(error_id: str):
return next((error for error in errors if error.id == error_id), None)

self.assertIsNone(api_settings.PAGE_SIZE)
self.assertIsNone(api_settings.MAX_PAGE_SIZE)
self.assertIsNone(api_settings.DEFAULT_PAGINATION_CLASS)

pagination_error = get_pagination_error('rest_framework.W001')
Expand All @@ -63,11 +64,19 @@ def get_pagination_error(error_id: str):
pagination_error = get_pagination_error('rest_framework.W001')
self.assertIsNotNone(pagination_error)

with override_settings(REST_FRAMEWORK={'MAX_PAGE_SIZE': 10}):
pagination_error = get_pagination_error('rest_framework.W001')
self.assertIsNotNone(pagination_error)

default_pagination_class = 'rest_framework.pagination.PageNumberPagination'
with override_settings(REST_FRAMEWORK={'PAGE_SIZE': 10, 'DEFAULT_PAGINATION_CLASS': default_pagination_class}):
pagination_error = get_pagination_error('rest_framework.W001')
self.assertIsNone(pagination_error)

with override_settings(REST_FRAMEWORK={'MAX_PAGE_SIZE': 10, 'DEFAULT_PAGINATION_CLASS': default_pagination_class}):
pagination_error = get_pagination_error('rest_framework.W001')
self.assertIsNone(pagination_error)


class TestSettingTypes(TestCase):
def test_settings_consistently_coerced_to_list(self):
Expand Down

0 comments on commit 1ada7c7

Please sign in to comment.