Skip to content

Commit 7f8bc5a

Browse files
authored
Fix paging when querying Jira via JQL (#939)
* Jira: Implement paging in Jira.jql * Jira: Use paging to get all commits in get_commits
1 parent 85f624e commit 7f8bc5a

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

atlassian/bitbucket/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2023,7 +2023,7 @@ def get_commits(
20232023
params["avatarScheme"] = avatar_scheme
20242024
if limit:
20252025
params["limit"] = limit
2026-
return (self.get(url, params=params) or {}).get("values")
2026+
return self._get_paged(url, params=params)
20272027

20282028
def _url_commit(self, project_key, repository_slug, commit_id, api_root=None, api_version=None):
20292029
return "{}/{}".format(

atlassian/jira.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2590,8 +2590,6 @@ def jql(self, jql, fields="*all", start=0, limit=None, expand=None, validate_que
25902590
:return:
25912591
"""
25922592
params = {}
2593-
if start is not None:
2594-
params["startAt"] = int(start)
25952593
if limit is not None:
25962594
params["maxResults"] = int(limit)
25972595
if fields is not None:
@@ -2605,7 +2603,24 @@ def jql(self, jql, fields="*all", start=0, limit=None, expand=None, validate_que
26052603
if validate_query is not None:
26062604
params["validateQuery"] = validate_query
26072605
url = self.resource_url("search")
2608-
return self.get(url, params=params)
2606+
2607+
results = []
2608+
while True:
2609+
params["startAt"] = int(start)
2610+
response = self.get(url, params=params)
2611+
if not response:
2612+
break
2613+
2614+
issues = response["issues"]
2615+
results.extend(issues)
2616+
total = int(response["total"])
2617+
# #print("DBG: response: total={total} start={startAt} max={maxResults}".format(**response))
2618+
# If we don't have a limit, and there's more to fetch, keep looping
2619+
if limit is not None or total <= len(response["issues"]) + start:
2620+
break
2621+
start += len(issues)
2622+
2623+
return results
26092624

26102625
def csv(self, jql, limit=1000, all_fields=True, start=None, delimiter=None):
26112626
"""

0 commit comments

Comments
 (0)