Skip to content

Commit e250afc

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

File tree

3 files changed

+77
-0
lines changed

3 files changed

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