Skip to content

Commit 535ac63

Browse files
committed
Bitbucket Cloud: Adding getting workspace members.
1 parent 27a84d2 commit 535ac63

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

atlassian/bitbucket/cloud/workspaces/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from requests import HTTPError
44
from ..base import BitbucketCloudBase
55

6+
from .members import WorkspaceMembers
67
from .permissions import Permissions
78
from .projects import Projects
89
from ..repositories import WorkspaceRepositories
@@ -88,6 +89,7 @@ def __init__(self, data, *args, **kwargs):
8889
self.__permissions = Permissions(self.url_joiner(self.url, "permissions"), **self._new_session_args)
8990
self.__projects = Projects(self.get_link("projects"), **self._new_session_args)
9091
self.__repositories = WorkspaceRepositories(self.get_link("repositories"), **self._new_session_args)
92+
self.__members = WorkspaceMembers(self.get_link("members"), **self._new_session_args)
9193

9294
@property
9395
def name(self):
@@ -137,3 +139,8 @@ def projects(self):
137139
def repositories(self):
138140
"""The workspace repositories"""
139141
return self.__repositories
142+
143+
@property
144+
def members(self):
145+
"""The workspace members"""
146+
return self.__members
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# coding=utf-8
2+
3+
from ..base import BitbucketCloudBase
4+
5+
6+
class WorkspaceMembers(BitbucketCloudBase):
7+
def __init__(self, url, *args, **kwargs):
8+
super(WorkspaceMembers, self).__init__(url, *args, **kwargs)
9+
10+
def __get_object(self, data):
11+
return WorkspaceMember(data, **self._new_session_args)
12+
13+
def each(self):
14+
"""
15+
Get all members in the workspace
16+
17+
:return: A generator for the member objects
18+
19+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-workspaces/#api-workspaces-workspace-members-get
20+
"""
21+
for member in self._get_paged(None):
22+
yield self.__get_object(member)
23+
24+
return
25+
26+
def get(self, member):
27+
"""
28+
Returns the requested member
29+
30+
:param member: string: Member's UUID or Atlassian ID.
31+
32+
:return: The requested Member object
33+
34+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-workspaces/#api-workspaces-workspace-members-member-get
35+
"""
36+
37+
return self.__get_object(super(WorkspaceMembers, self).get(member))
38+
39+
40+
class WorkspaceMember(BitbucketCloudBase):
41+
def __init__(self, data, *args, **kwargs):
42+
super(WorkspaceMember, self).__init__(None, *args, data=data, expected_type="workspace_membership", **kwargs)
43+
44+
@property
45+
def links(self):
46+
"""The member links"""
47+
return self.get_data("links")
48+
49+
@property
50+
def type(self):
51+
"""The member type"""
52+
return self.get_data("type")
53+
54+
@property
55+
def user(self):
56+
"""The member user dictionary"""
57+
return self.get_data("user")
58+
59+
@property
60+
def workspace(self):
61+
"""The member workspace dictionary"""
62+
return self.get_data("workspace")

docs/bitbucket.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,13 @@ Bitbucket Cloud
413413
# Delete repository_variable
414414
repository_variable.delete()
415415
416+
# Get a list of workspace members
417+
workplace.members.each()
418+
419+
# Get a specific workspace member
420+
workplace.members.get("a-user-account-id")
421+
workplace.members.get("{a-user-uuid}")
422+
416423
Pipelines management
417424
--------------------
418425

0 commit comments

Comments
 (0)