66
77
88class Bitbucket (AtlassianRestAPI ):
9+
910 def project_list (self , limit = None ):
1011 """
1112 Provide the project list
@@ -17,14 +18,24 @@ def project_list(self, limit=None):
1718 params ['limit' ] = limit
1819 return (self .get ('rest/api/1.0/projects' , params = params ) or {}).get ('values' )
1920
21+ def repo_list (self , project_key ):
22+ """
23+ Provide the repository list in a specific BB project
24+ :param project_key: The Project Key ID you need to list
25+ return:
26+ """
27+ url = 'rest/api/1.0/projects/{projectKey}/repos?limit=1000' .format (
28+ projectKey = project_key )
29+ return self .get (url )
30+
2031 def project (self , key ):
2132 """
2233 Provide project info
2334 :param key:
2435 :return:
2536 """
2637 url = 'rest/api/1.0/projects/{0}' .format (key )
27- return ( self .get (url ) or {})
38+ return self .get (url ) or {}
2839
2940 def create_project (self , key , name , description = "" ):
3041 """
@@ -41,6 +52,48 @@ def create_project(self, key, name, description=""):
4152 }
4253 return self .post (url , data = data )
4354
55+ def update_project (self , key , ** params ):
56+ """
57+ Update project
58+ :param key:
59+ :param **params:
60+ :return:
61+ """
62+ data = self .project (key )
63+ if not 'errors' in data :
64+ data .update (params )
65+ url = 'rest/api/1.0/projects/{0}' .format (key )
66+ return self .put (url , data = data )
67+ else :
68+ log .debug ('Failed to update project: {0}: Unable to read project' .format (key ))
69+ return None
70+
71+ def project_avatar (self , key , content_type = 'image/png' ):
72+ """
73+ Get project avatar
74+
75+ :param key:
76+ :return:
77+ """
78+ url = 'rest/api/1.0/projects/{0}/avatar.png' .format (key )
79+ headers = dict (self .default_headers )
80+ headers ['Accept' ] = content_type
81+ headers ['X-Atlassian-Token' ] = 'no-check'
82+
83+ return self .get (url , not_json_response = True , headers = headers ) or {}
84+
85+ def set_project_avatar (self , key , icon , content_type = 'image/png' ):
86+ """
87+ Set project avatar
88+
89+ :param key:
90+ :return:
91+ """
92+ headers = {'X-Atlassian-Token' : 'no-check' }
93+ files = {'avatar' : ("avatar.png" , icon , content_type )}
94+ url = 'rest/api/1.0/projects/{0}/avatar.png' .format (key )
95+ return self .post (url , files = files , headers = headers ) or {}
96+
4497 def project_users (self , key , limit = 99999 , filter_str = None ):
4598 """
4699 Get users who has permission in project
@@ -273,7 +326,8 @@ def project_summary(self, key):
273326 'key' : key ,
274327 'data' : self .project (key ),
275328 'users' : self .project_users (key ),
276- 'groups' : self .project_groups (key )}
329+ 'groups' : self .project_groups (key ),
330+ 'avatar' : self .project_avatar (key )}
277331
278332 def group_members (self , group , limit = 99999 ):
279333 """
@@ -726,25 +780,25 @@ def get_pullrequest(self, project, repository, pull_request_id):
726780 pullRequestId = pull_request_id )
727781 return self .get (url )
728782
729- def change_reviewed_status (self , projectKey , repositorySlug , pullRequestId , status , userSlug ):
783+ def change_reviewed_status (self , project_key , repository_slug , pull_request_id , status , user_slug ):
730784 """
731785 Change the current user's status for a pull request.
732786 Implicitly adds the user as a participant if they are not already.
733787 If the current user is the author, this method will fail.
734- :param projectKey :
735- :param repositorySlug :
736- :param pullRequestId :
788+ :param project_key :
789+ :param repository_slug :
790+ :param pull_request_id :
737791 :param status:
738- :param userSlug :
792+ :param user_slug :
739793 :return:
740794 """
741- url = "/ rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/participants/{userSlug}" .format (
742- projectKey = projectKey , repositorySlug = repositorySlug , pullRequestId = pullRequestId , userSlug = userSlug ,
795+ url = "rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/participants/{userSlug}" .format (
796+ projectKey = project_key , repositorySlug = repository_slug , pullRequestId = pull_request_id , userSlug = user_slug ,
743797 )
744798 approved = True if status == "APPROVED" else False
745799 data = {
746800 "user" : {
747- "name" : userSlug
801+ "name" : user_slug
748802 },
749803 "approved" : approved ,
750804 "status" : status
@@ -1207,7 +1261,7 @@ def upload_file(self, project, repository, content, message, branch, filename):
12071261 filename = filename )
12081262 return self .put (url , files = data )
12091263
1210- def update_file (self , project , repository , content , message , branch , filename , sourceCommitId ):
1264+ def update_file (self , project , repository , content , message , branch , filename , source_commit_id ):
12111265 """
12121266 Update existing file for given branch.
12131267 :param project:
@@ -1216,14 +1270,14 @@ def update_file(self, project, repository, content, message, branch, filename, s
12161270 :param message:
12171271 :param branch:
12181272 :param filename:
1219- :param sourceCommitId :
1273+ :param source_commit_id :
12201274 :return:
12211275 """
12221276 data = {
12231277 "content" : content ,
12241278 "message" : message ,
12251279 "branch" : branch ,
1226- "sourceCommitId" : sourceCommitId
1280+ "sourceCommitId" : source_commit_id
12271281 }
12281282
12291283 url = 'rest/api/1.0/projects/{project}/repos/{repository}/browse/{filename}' .format (
@@ -1232,33 +1286,34 @@ def update_file(self, project, repository, content, message, branch, filename, s
12321286 filename = filename )
12331287 return self .put (url , files = data )
12341288
1235- def get_code_insights_report (self , projectKey , repositorySlug , commitId , report_key ):
1289+ def get_code_insights_report (self , project_key , repository_slug , commit_id , report_key ):
12361290 """
12371291 Retrieve the specified code-insights report.
12381292 :projectKey: str
12391293 :repositorySlug: str
12401294 :commitId: str
12411295 :report_key: str
12421296 """
1243- url = "/ rest/insights/1.0/projects/{projectKey}/repos/{repositorySlug}/commits/{commitId}/reports/{key}" .format (
1244- projectKey = projectKey , repositorySlug = repositorySlug , commitId = commitId , key = report_key
1297+ url = "rest/insights/1.0/projects/{projectKey}/repos/{repositorySlug}/commits/{commitId}/reports/{key}" .format (
1298+ projectKey = project_key , repositorySlug = repository_slug , commitId = commit_id , key = report_key
12451299 )
12461300 return self .get (url )
12471301
1248- def delete_code_insights_report (self , projectKey , repositorySlug , commitId , report_key ):
1302+ def delete_code_insights_report (self , project_key , repository_slug , commit_id , report_key ):
12491303 """
12501304 Delete a report for the given commit. Also deletes any annotations associated with this report.
12511305 :projectKey: str
12521306 :repositorySlug: str
12531307 :commitId: str
12541308 :report_key: str
12551309 """
1256- url = "/ rest/insights/1.0/projects/{projectKey}/repos/{repositorySlug}/commits/{commitId}/reports/{key}" .format (
1257- projectKey = projectKey , repositorySlug = repositorySlug , commitId = commitId , key = report_key
1310+ url = "rest/insights/1.0/projects/{projectKey}/repos/{repositorySlug}/commits/{commitId}/reports/{key}" .format (
1311+ projectKey = project_key , repositorySlug = repository_slug , commitId = commit_id , key = report_key
12581312 )
12591313 return self .delete (url )
12601314
1261- def create_code_insights_report (self , projectKey , repositorySlug , commitId , report_key , report_title , ** report_params ):
1315+ def create_code_insights_report (self , project_key , repository_slug , commit_id , report_key , report_title ,
1316+ ** report_params ):
12621317 """
12631318 Create a new insight report, or replace the existing one if a report already exists for the given repository, commit, and report key.
12641319 A request to replace an existing report will be rejected if the authenticated user was not the creator of the specified report.
@@ -1270,8 +1325,8 @@ def create_code_insights_report(self, projectKey, repositorySlug, commitId, repo
12701325 :report_title: str
12711326 :report_params:
12721327 """
1273- url = "/ rest/insights/1.0/projects/{projectKey}/repos/{repositorySlug}/commits/{commitId}/reports/{key}" .format (
1274- projectKey = projectKey , repositorySlug = repositorySlug , commitId = commitId , key = report_key
1328+ url = "rest/insights/1.0/projects/{projectKey}/repos/{repositorySlug}/commits/{commitId}/reports/{key}" .format (
1329+ projectKey = project_key , repositorySlug = repository_slug , commitId = commit_id , key = report_key
12751330 )
12761331 data = {"title" : report_title }
12771332 data .update (report_params )
0 commit comments