From 5dd93c096d64292a034d1e1f79a5955b63f7f7f1 Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Wed, 11 Dec 2024 16:19:26 -0500 Subject: [PATCH] Raise ImproperlyConfigured error if MAX_PAGE_SIZE < PAGINATE_COUNT --- netbox/netbox/api/pagination.py | 4 +--- netbox/netbox/settings.py | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/netbox/netbox/api/pagination.py b/netbox/netbox/api/pagination.py index 961d52477..5ecade264 100644 --- a/netbox/netbox/api/pagination.py +++ b/netbox/netbox/api/pagination.py @@ -38,14 +38,12 @@ class OptionalLimitOffsetPagination(LimitOffsetPagination): def get_limit(self, request): if self.limit_query_param: - MAX_PAGE_SIZE = get_config().MAX_PAGE_SIZE - if MAX_PAGE_SIZE: - MAX_PAGE_SIZE = max(MAX_PAGE_SIZE, self.default_limit) try: limit = int(request.query_params[self.limit_query_param]) if limit < 0: raise ValueError() # Enforce maximum page size, if defined + MAX_PAGE_SIZE = get_config().MAX_PAGE_SIZE if MAX_PAGE_SIZE: return MAX_PAGE_SIZE if limit == 0 else min(limit, MAX_PAGE_SIZE) return limit diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index a8ac68d4d..cad076bc3 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -129,8 +129,10 @@ LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False) LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', True) LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None) LOGOUT_REDIRECT_URL = getattr(configuration, 'LOGOUT_REDIRECT_URL', 'home') +MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000) MEDIA_ROOT = getattr(configuration, 'MEDIA_ROOT', os.path.join(BASE_DIR, 'media')).rstrip('/') METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False) +PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50) PLUGINS = getattr(configuration, 'PLUGINS', []) PLUGINS_CONFIG = getattr(configuration, 'PLUGINS_CONFIG', {}) QUEUE_MAPPINGS = getattr(configuration, 'QUEUE_MAPPINGS', {}) @@ -685,6 +687,10 @@ REST_FRAMEWORK = { 'VIEW_NAME_FUNCTION': 'utilities.api.get_view_name', } +if MAX_PAGE_SIZE < PAGINATE_COUNT: + raise ImproperlyConfigured(f'MAX_PAGE_SIZE ({MAX_PAGE_SIZE}) cannot be less than PAGINATE_COUNT ({PAGINATE_COUNT}).') + + # # DRF Spectacular #