Skip to content

Commit 4f5deba

Browse files
committed
Bitbucket Cloud: Add workspaces permissions.
1 parent 9896a74 commit 4f5deba

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-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 .permissions import Permissions
67
from .projects import Projects
78
from ..repositories import WorkspaceRepositories
89

@@ -84,6 +85,7 @@ def exists(self, workspace):
8485
class Workspace(BitbucketCloudBase):
8586
def __init__(self, data, *args, **kwargs):
8687
super(Workspace, self).__init__(None, *args, data=data, expected_type="workspace", **kwargs)
88+
self.__permissions = Permissions(self.url_joiner(self.url, "permissions"), **self._new_session_args)
8789
self.__projects = Projects(self.get_link("projects"), **self._new_session_args)
8890
self.__repositories = WorkspaceRepositories(self.get_link("repositories"), **self._new_session_args)
8991

@@ -121,6 +123,11 @@ def get_avatar(self):
121123
"""The project avatar"""
122124
return self.get(self.get_link("avatar"), absolute=True)
123125

126+
@property
127+
def permissions(self):
128+
"""The workspace permissions repositories"""
129+
return self.__permissions
130+
124131
@property
125132
def projects(self):
126133
"""The workspace projects"""
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# coding=utf-8
2+
3+
4+
5+
from ..base import BitbucketCloudBase
6+
7+
8+
class Permissions(BitbucketCloudBase):
9+
def __init__(self, url, *args, **kwargs):
10+
super(Permissions, self).__init__(url, *args, **kwargs)
11+
12+
def __get_object_workspace_membership(self, data):
13+
return WorkspaceMembership(
14+
self.url,
15+
data,
16+
**self._new_session_args,
17+
)
18+
19+
def each(self, q=None, sort=None, pagelen=10):
20+
"""
21+
Returns the list of pipelines in this repository.
22+
23+
:param q: string: Query string to narrow down the response.
24+
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
25+
:param sort: string: Name of a response property to sort results.
26+
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
27+
28+
:return: A generator for the Workspace Permission objects
29+
30+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-workspaces/#api-workspaces-workspace-permissions-get
31+
"""
32+
params = {}
33+
if sort is not None:
34+
params["sort"] = sort
35+
if q is not None:
36+
params["q"] = q
37+
params["pagelen"] = pagelen
38+
for workspace_membership in self._get_paged(
39+
None,
40+
trailing=True,
41+
paging_workaround=True,
42+
params=params,
43+
):
44+
yield self.__get_object_workspace_membership(workspace_membership)
45+
46+
return
47+
48+
49+
class WorkspaceMembership(BitbucketCloudBase):
50+
def __init__(self, url, data, *args, **kwargs):
51+
super(WorkspaceMembership, self).__init__(url, *args, data=data, expected_type="workspace_membership", **kwargs)
52+
53+
@property
54+
def uuid(self):
55+
"""The workspace_membership uuid"""
56+
return self.get_data("uuid")
57+
58+
@property
59+
def type(self):
60+
"""The workspace_membership type"""
61+
return self.get_data("type")
62+
63+
@property
64+
def user(self):
65+
"""The workspace_membership user"""
66+
return self.get_data("user")
67+
68+
@property
69+
def workspace(self):
70+
"""The workspace_membership workspace"""
71+
return self.get_data("workspace")
72+
73+
@property
74+
def links(self):
75+
"""The workspace_membership links"""
76+
return self.get_data("links")
77+
78+
@property
79+
def added_on(self):
80+
"""The workspace_membership added on"""
81+
return self.get_time("added_on")
82+
83+
@property
84+
def permission(self):
85+
"""The workspace_membership permission"""
86+
return self.get_data("permission")
87+
88+
@property
89+
def last_accessed(self):
90+
"""The workspace_membership last accessed"""
91+
return self.get_time("last_accessed")

0 commit comments

Comments
 (0)