Skip to content

Commit 4834981

Browse files
Dmitriy DiachkovDmitriy Diachkov
authored andcommitted
Change _get_generator for correct working with max_results
1 parent 4236e59 commit 4834981

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

atlassian/bamboo.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
class Bamboo(AtlassianRestAPI):
99
def _get_generator(self, path, elements_key='results', element_key='result', data=None, flags=None,
10-
params=None, headers=None):
10+
params=None, headers=None, max_results=None):
1111
"""
1212
Generic method to return a generator with the results returned from Bamboo. It is intended to work for
1313
responses in the form:
@@ -27,22 +27,21 @@ def _get_generator(self, path, elements_key='results', element_key='result', dat
2727
:param path: URI for the resource
2828
:return: generator with the contents of response[elements_key][element_key]
2929
"""
30-
size = 1
3130
start_index = 0
32-
while size:
33-
params['start-index'] = start_index
34-
response = self.get(path, data, flags, params, headers)
35-
results = response[elements_key]
36-
size = results['size']
37-
# Check if start index was reset when reaching the end of the pages list
38-
if results['start-index'] < start_index:
39-
break
40-
for r in results[element_key]:
41-
yield r
42-
start_index += results['max-result']
43-
44-
def base_list_call(self, resource, expand, favourite, clover_enabled, max_results, label=None, start_index=0,
45-
**kwargs):
31+
params['start-index'] = start_index
32+
response = self.get(path, data, flags, params, headers)
33+
results = response[elements_key]
34+
size = 0
35+
36+
# Check if we still can get results
37+
if size > max_results or results['size'] == 0:
38+
return
39+
for r in results[element_key]:
40+
size += 1
41+
yield r
42+
start_index += results['max-result']
43+
44+
def base_list_call(self, resource, expand, favourite, clover_enabled, max_results, label=None, start_index=0, **kwargs):
4645
flags = []
4746
params = {'max-results': max_results}
4847
if expand:
@@ -57,10 +56,11 @@ def base_list_call(self, resource, expand, favourite, clover_enabled, max_result
5756
if 'elements_key' in kwargs and 'element_key' in kwargs:
5857
return self._get_generator(self.resource_url(resource), flags=flags, params=params,
5958
elements_key=kwargs['elements_key'],
60-
element_key=kwargs['element_key'])
59+
element_key=kwargs['element_key'],
60+
max_results=max_results)
6161
params['start-index'] = start_index
6262
return self.get(self.resource_url(resource), flags=flags, params=params)
63-
63+
6464
def get_custom_expiry(self, limit=25):
6565
"""
6666
Get list of all plans where user has admin permission and which override global expiry settings.

0 commit comments

Comments
 (0)