summaryrefslogtreecommitdiff
path: root/gitlab/__init__.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2015-08-21 12:33:12 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2015-08-21 12:33:12 +0200
commit24d5035558dec227d2a497d7bf5be3bbaafc0c00 (patch)
tree93f8f4334e5a9faa330daec11e35b1c951380a9a /gitlab/__init__.py
parentadbe0a4391f1e3b4d615ef7966dfa66e75b9a6fa (diff)
parent719526dc8b0fb7d577f0a5ffa80d8f0ca31a95c6 (diff)
downloadgitlab-24d5035558dec227d2a497d7bf5be3bbaafc0c00.tar.gz
Merge pull request #64 from jantman/issues/63
python-gitlab Issue #63 - implement pagination for list()
Diffstat (limited to 'gitlab/__init__.py')
-rw-r--r--gitlab/__init__.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 43b139d..f61b3b4 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -189,6 +189,8 @@ class Gitlab(object):
self._url = '%s/api/v3' % url
def _construct_url(self, id_, obj, parameters):
+ if 'next_url' in parameters:
+ return parameters['next_url']
args = _sanitize_dict(parameters)
if id_ is None and obj._urlPlural is not None:
url = obj._urlPlural % args
@@ -346,8 +348,13 @@ class Gitlab(object):
if key in cls_kwargs:
del cls_kwargs[key]
- return [cls(self, item, **cls_kwargs) for item in r.json()
- if item is not None]
+ results = [cls(self, item, **cls_kwargs) for item in r.json()
+ if item is not None]
+ if 'next' in r.links and 'url' in r.links['next']:
+ args = kwargs.copy()
+ args['next_url'] = r.links['next']['url']
+ results.extend(self.list(obj_class, **args))
+ return results
else:
_raise_error_from_response(r, GitlabListError)