diff options
author | Roger Meier <r.meier@siemens.com> | 2020-01-26 17:49:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-26 17:49:22 +0100 |
commit | df485a92b713a0f2f983c72d9d41ea3a771abf88 (patch) | |
tree | 70a2f9eb46f50fd59a55118708d1e34d660333b7 /gitlab | |
parent | 7fd3226fc6b629d503bc1b0a657bc21f69bc4696 (diff) | |
parent | d1879253dae93e182710fe22b0a6452296e2b532 (diff) | |
download | gitlab-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__.py | 8 | ||||
-rw-r--r-- | gitlab/config.py | 12 | ||||
-rw-r--r-- | gitlab/mixins.py | 7 | ||||
-rw-r--r-- | gitlab/v4/objects.py | 13 |
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", ) |