diff mbox series

[02/10] REST: Add new setting for maximum API page size

Message ID 20190430060308.10432-3-dja@axtens.net
State Accepted
Headers show
Series Patchwork 2.1.2 review series | expand

Commit Message

Daniel Axtens April 30, 2019, 6:03 a.m. UTC
From: Andrew Donnellan <andrew.donnellan@au1.ibm.com>

In 41790caf59ad ("REST: Limit max page size") we limited the maximum page
size to the default page size in the settings.

This turns out to be rather restrictive, as we usually want to keep the
default page size low, but an administrator may want to allow API clients
to fetch more than that per request.

Add a new setting, MAX_REST_RESULTS_PER_PAGE, to set the maximum page size.

Closes: #202 ("Separate max API page size and default API page size into different settings")
Suggested-by: Stewart Smith <stewart@linux.ibm.com>
Suggested-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
[dja: set to 250 as per mailing list discussion]
Signed-off-by: Daniel Axtens <dja@axtens.net>
(cherry picked from commit 8fe11180a1a59f6e8e5a4441b21a3d9831f0b69d)
Signed-off-by: Daniel Axtens <dja@axtens.net>
---
 docs/deployment/configuration.rst | 8 +++++++-
 patchwork/api/base.py             | 3 ++-
 patchwork/settings/base.py        | 1 +
 3 files changed, 10 insertions(+), 2 deletions(-)

Comments

Stephen Finucane April 30, 2019, 5:49 p.m. UTC | #1
On Tue, 2019-04-30 at 16:03 +1000, Daniel Axtens wrote:
> From: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
> 
> In 41790caf59ad ("REST: Limit max page size") we limited the maximum page
> size to the default page size in the settings.
> 
> This turns out to be rather restrictive, as we usually want to keep the
> default page size low, but an administrator may want to allow API clients
> to fetch more than that per request.
> 
> Add a new setting, MAX_REST_RESULTS_PER_PAGE, to set the maximum page size.
> 
> Closes: #202 ("Separate max API page size and default API page size into different settings")
> Suggested-by: Stewart Smith <stewart@linux.ibm.com>
> Suggested-by: Joel Stanley <joel@jms.id.au>
> Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
> [dja: set to 250 as per mailing list discussion]
> Signed-off-by: Daniel Axtens <dja@axtens.net>
> (cherry picked from commit 8fe11180a1a59f6e8e5a4441b21a3d9831f0b69d)
> Signed-off-by: Daniel Axtens <dja@axtens.net>

Applied.
diff mbox series

Patch

diff --git a/docs/deployment/configuration.rst b/docs/deployment/configuration.rst
index 347485636d47..e599522a412b 100644
--- a/docs/deployment/configuration.rst
+++ b/docs/deployment/configuration.rst
@@ -88,7 +88,13 @@  Enable the :doc:`REST API <../api/rest>`.
 The number of items to include in REST API responses by default. This can be
 overridden by the ``per_page`` parameter for some endpoints.
 
-.. versionadded:: 2.0
+``MAX_REST_RESULTS_PER_PAGE``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The maximum number of items that can be requested in a REST API request using
+the ``per_page`` parameter.
+
+.. versionadded:: 2.2
 
 ``COMPAT_REDIR``
 ~~~~~~~~~~~~~~~~
diff --git a/patchwork/api/base.py b/patchwork/api/base.py
index 8c38d5a1d5f4..bf452f78b390 100644
--- a/patchwork/api/base.py
+++ b/patchwork/api/base.py
@@ -36,7 +36,8 @@  class LinkHeaderPagination(PageNumberPagination):
        https://tools.ietf.org/html/rfc5988#section-5
        https://developer.github.com/guides/traversing-with-pagination
     """
-    page_size = max_page_size = settings.REST_RESULTS_PER_PAGE
+    page_size = settings.REST_RESULTS_PER_PAGE
+    max_page_size = settings.MAX_REST_RESULTS_PER_PAGE
     page_size_query_param = 'per_page'
 
     def get_paginated_response(self, data):
diff --git a/patchwork/settings/base.py b/patchwork/settings/base.py
index 4b0d5513895a..45c66da79e67 100644
--- a/patchwork/settings/base.py
+++ b/patchwork/settings/base.py
@@ -220,6 +220,7 @@  ENABLE_XMLRPC = False
 ENABLE_REST_API = True
 
 REST_RESULTS_PER_PAGE = 30
+MAX_REST_RESULTS_PER_PAGE = 250
 
 # Set to True to enable redirections or URLs from previous versions
 # of patchwork