summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
authorRoger Meier <r.meier@siemens.com>2020-01-26 17:49:22 +0100
committerGitHub <noreply@github.com>2020-01-26 17:49:22 +0100
commitdf485a92b713a0f2f983c72d9d41ea3a771abf88 (patch)
tree70a2f9eb46f50fd59a55118708d1e34d660333b7 /gitlab
parent7fd3226fc6b629d503bc1b0a657bc21f69bc4696 (diff)
parentd1879253dae93e182710fe22b0a6452296e2b532 (diff)
downloadgitlab-df485a92b713a0f2f983c72d9d41ea3a771abf88.tar.gz
Merge pull request #1001 from python-gitlab/feat/keyset-paginationv2.0.0
Feat/keyset pagination
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/__init__.py8
-rw-r--r--gitlab/config.py12
-rw-r--r--gitlab/mixins.py7
-rw-r--r--gitlab/v4/objects.py13
4 files changed, 39 insertions, 1 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 9cb027b..85fc5e0 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -69,6 +69,8 @@ class Gitlab(object):
http_username (str): Username for HTTP authentication
http_password (str): Password for HTTP authentication
api_version (str): Gitlab API version to use (support for 4 only)
+ pagination (str): Can be set to 'keyset' to use keyset pagination
+ order_by (str): Set order_by globally
"""
def __init__(
@@ -84,6 +86,8 @@ class Gitlab(object):
api_version="4",
session=None,
per_page=None,
+ pagination=None,
+ order_by=None,
):
self._api_version = str(api_version)
@@ -109,6 +113,8 @@ class Gitlab(object):
self.session = session or requests.Session()
self.per_page = per_page
+ self.pagination = pagination
+ self.order_by = order_by
objects = importlib.import_module("gitlab.v%s.objects" % self._api_version)
self._objects = objects
@@ -200,6 +206,8 @@ class Gitlab(object):
http_password=config.http_password,
api_version=config.api_version,
per_page=config.per_page,
+ pagination=config.pagination,
+ order_by=config.order_by,
)
def auth(self):
diff --git a/gitlab/config.py b/gitlab/config.py
index b2c0dbf..2272dd3 100644
--- a/gitlab/config.py
+++ b/gitlab/config.py
@@ -163,3 +163,15 @@ class GitlabConfigParser(object):
pass
if self.per_page is not None and not 0 <= self.per_page <= 100:
raise GitlabDataError("Unsupported per_page number: %s" % self.per_page)
+
+ self.pagination = None
+ try:
+ self.pagination = self._config.get(self.gitlab_id, "pagination")
+ except Exception:
+ pass
+
+ self.order_by = None
+ try:
+ self.order_by = self._config.get(self.gitlab_id, "order_by")
+ except Exception:
+ pass
diff --git a/gitlab/mixins.py b/gitlab/mixins.py
index c812d66..8544499 100644
--- a/gitlab/mixins.py
+++ b/gitlab/mixins.py
@@ -120,6 +120,13 @@ class ListMixin(object):
if self.gitlab.per_page:
data.setdefault("per_page", self.gitlab.per_page)
+ # global keyset pagination
+ if self.gitlab.pagination:
+ data.setdefault("pagination", self.gitlab.pagination)
+
+ if self.gitlab.order_by:
+ data.setdefault("order_by", self.gitlab.order_by)
+
# We get the attributes that need some special transformation
types = getattr(self, "_types", {})
if types:
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index c38a4bf..1750a36 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -268,6 +268,13 @@ class UserProjectManager(ListMixin, CreateMixin, RESTManager):
"statistics",
"with_issues_enabled",
"with_merge_requests_enabled",
+ "with_custom_attributes",
+ "with_programming_language",
+ "wiki_checksum_failed",
+ "repository_checksum_failed",
+ "min_access_level",
+ "id_after",
+ "id_before",
)
def list(self, **kwargs):
@@ -1192,12 +1199,16 @@ class GroupProjectManager(ListMixin, RESTManager):
"order_by",
"sort",
"search",
- "ci_enabled_first",
"simple",
"owned",
"starred",
"with_custom_attributes",
"include_subgroups",
+ "with_issues_enabled",
+ "with_merge_requests_enabled",
+ "with_shared",
+ "min_access_level",
+ "with_security_reports",
)