Skip to content

Commit 9c5e375

Browse files
committed
Merge pull request pyapi-gitlab#22 from sag47/feature-pagination
Feature pagination for getGroups and getUsers
2 parents 51febf0 + 148487c commit 9c5e375

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

gitlab/__init__.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,24 @@ def login(self, email, password):
3535
print request
3636
return False
3737

38-
def getUsers(self, id_=0):
38+
def getUsers(self, id_=0, page=1, per_page=20):
3939
"""
4040
Return a user list
4141
:param id_: the id of the user to get instead of getting all users,
4242
return all users if 0
43+
:param page: Which page to return (default is 1)
44+
:param per_page: Number of items to return per page (default is 20)
4345
return: returs a dictionary of the users, false if there is an error
4446
"""
47+
params = {'page': page, 'per_page': per_page}
4548
if id_ != 0:
4649
request = requests.get(self.host + "/api/v3/users/" + str(id_),
47-
headers=self.headers)
50+
params=params, headers=self.headers)
4851
user = json.loads(request.content)
4952
return [user['id'], user['username'], user['name'], user['email'],
5053
user['state'], user['created_at']]
5154
else:
52-
request = requests.get(self.users_url, headers=self.headers)
55+
request = requests.get(self.users_url, params=params, headers=self.headers)
5356
if request.status_code == 200:
5457
return json.loads(request.content)
5558
else:
@@ -217,6 +220,8 @@ def deleteSshKey(self, id_):
217220
def getProjects(self, page=1, per_page=20):
218221
"""
219222
Returns a dictionary of all the projects
223+
:param page: Which page to return (default is 1)
224+
:param per_page: Number of items to return per page (default is 20)
220225
:return: list with the repo name, description, last activity,
221226
web url, ssh url, owner and if its public
222227
"""
@@ -242,15 +247,18 @@ def getProject(self, id_):
242247
print request
243248
return False
244249

245-
def getProjectEvents(self, id_):
250+
def getProjectEvents(self, id_, page=1, per_page=20):
246251
"""
247252
Get the project identified by id, events(commits)
248253
:param id_: id of the project
254+
:param page: Which page to return (default is 1)
255+
:param per_page: Number of items to return per page (default is 20)
249256
:return: False if no project with that id, a dictionary
250257
with the events if found
251258
"""
259+
params = {'page': page, 'per_page': per_page}
252260
request = requests.get(self.projects_url + "/" + str(id_) +
253-
"/events", headers=self.headers)
261+
"/events", params=params, headers=self.headers)
254262
if request.status_code == 200:
255263
return json.loads(request.content)
256264
else:
@@ -472,18 +480,31 @@ def removeForkRelation(self, id_):
472480
print request
473481
return False
474482

475-
def getIssues(self):
483+
def getIssues(self, page=1, per_page=20):
484+
"""
485+
Return a global list of issues for your user.
486+
:param page: Which page to return (default is 1)
487+
:param per_page: Number of items to return per page (default is 20)
488+
"""
489+
params = {'page': page, 'per_page': per_page}
476490
request = requests.get(self.host + "/api/v3/issues",
477-
headers=self.headers)
491+
params=params, headers=self.headers)
478492
if request.status_code == 200:
479493
return json.loads(request.content)
480494
else:
481495
print request
482496
return False
483497

484-
def getProjectIssues(self, id_):
498+
def getProjectIssues(self, id_, page=1, per_page=20):
499+
"""
500+
Return a list of issues for project id_.
501+
:param id_: The id for the project.
502+
:param page: Which page to return (default is 1)
503+
:param per_page: Number of items to return per page (default is 20)
504+
"""
505+
params = {'page': page, 'per_page': per_page}
485506
request = requests.get(self.projects_url + "/" + str(id_) +
486-
"/issues", headers=self.headers)
507+
"/issues", params=params, headers=self.headers)
487508
if request.status_code == 200:
488509
return json.loads(request.content)
489510
else:
@@ -671,14 +692,17 @@ def createGroup(self, name, path):
671692
print request
672693
return False
673694

674-
def getGroups(self, id_=None):
695+
def getGroups(self, id_=None, page=1, per_page=20):
675696
"""
676697
Retrieve group information
677698
:param id_: Specify a group. Otherwise, all groups are returned
699+
:param page: Which page to return (default is 1)
700+
:param per_page: Number of items to return per page (default is 20)
678701
"""
702+
params = {'page': page, 'per_page': per_page}
679703
request = requests.get("{0}/{1}".format(self.groups_url,
680704
id_ if id_ else ""),
681-
headers=self.headers)
705+
params=params, headers=self.headers)
682706
if request.status_code == 200:
683707
return json.loads(request.content)
684708
else:

0 commit comments

Comments
 (0)