77
88class 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