Skip to content

Commit 01fcf59

Browse files
authored
Bitbucket Cloud: Adding Repository Group Permissions (#1183)
* Bitbucket Cloud: Adding Repository Group Permissions * Bitbucket Cloud: Updating bitbucket read the docs.
1 parent 9cd0df8 commit 01fcf59

File tree

3 files changed

+96
-0
lines changed

3 files changed

+96
-0
lines changed

atlassian/bitbucket/cloud/repositories/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from .commits import Commits
88
from .defaultReviewers import DefaultReviewers
99
from .deploymentEnvironments import DeploymentEnvironments
10+
from .groupPermissions import GroupPermissions
1011
from .pipelines import Pipelines
1112
from .pullRequests import PullRequests
1213
from .refs import Branches, Tags
@@ -262,6 +263,9 @@ def __init__(self, data, *args, **kwargs):
262263
self.__deployment_environments = DeploymentEnvironments(
263264
"{}/environments".format(self.url), **self._new_session_args
264265
)
266+
self.__group_permissions = GroupPermissions(
267+
"{}/permissions-config/groups".format(self.url), **self._new_session_args
268+
)
265269
self.__issues = Issues("{}/issues".format(self.url), **self._new_session_args)
266270
self.__pipelines = Pipelines("{}/pipelines".format(self.url), **self._new_session_args)
267271
self.__pullrequests = PullRequests("{}/pullrequests".format(self.url), **self._new_session_args)
@@ -396,6 +400,11 @@ def issues(self):
396400
"""The repository issues"""
397401
return self.__issues
398402

403+
@property
404+
def group_permissions(self):
405+
"""The repository group permissions"""
406+
return self.__group_permissions
407+
399408
@property
400409
def pipelines(self):
401410
"""The repository pipelines"""
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# coding=utf-8
2+
3+
from ..base import BitbucketCloudBase
4+
5+
6+
class GroupPermissions(BitbucketCloudBase):
7+
def __init__(self, url, *args, **kwargs):
8+
super(GroupPermissions, self).__init__(url, *args, **kwargs)
9+
10+
def __get_object(self, data):
11+
return GroupPermission(
12+
self.url,
13+
data,
14+
**self._new_session_args,
15+
)
16+
17+
def each(self, q=None, sort=None):
18+
"""
19+
Returns the list of group permissions in this repository.
20+
21+
:param q: string: Query string to narrow down the response.
22+
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
23+
:param sort: string: Name of a response property to sort results.
24+
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
25+
26+
:return: A generator for the GroupPermission objects
27+
28+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-permissions-config-groups-get
29+
"""
30+
params = {}
31+
if sort is not None:
32+
params["sort"] = sort
33+
if q is not None:
34+
params["q"] = q
35+
for group_permission in self._get_paged(
36+
None,
37+
trailing=True,
38+
params=params,
39+
):
40+
yield self.__get_object(group_permission)
41+
42+
return
43+
44+
def get(self, group_slug):
45+
"""
46+
Returns the group permission with the group slug in this repository.
47+
48+
:param group_slug: string: The requested permission group_slug
49+
50+
:return: The requested GroupPermission objects
51+
52+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-permissions-config-groups-group-slug-get
53+
"""
54+
return self.__get_object(super(GroupPermissions, self).get(group_slug))
55+
56+
57+
class GroupPermission(BitbucketCloudBase):
58+
def __init__(self, url, data, *args, **kwargs):
59+
super(GroupPermission, self).__init__(
60+
url, *args, data=data, expected_type="repository_group_permission", **kwargs
61+
)
62+
63+
@property
64+
def type(self):
65+
"""The repository variable type"""
66+
return self.get_data("type")
67+
68+
@property
69+
def permission(self):
70+
"""The repository variable permission"""
71+
return self.get_data("permission")
72+
73+
@property
74+
def group(self):
75+
"""The repository variable group"""
76+
return self.get_data("group")
77+
78+
@property
79+
def links(self):
80+
"""The repository variable links"""
81+
return self.get_data("links")

docs/bitbucket.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,12 @@ Bitbucket Cloud
371371
# Get a list of deployment environment variables from a deployment environment
372372
deployment_environment.deployment_environment_variables.each():
373373
374+
# Get a list of group permissions from a repository
375+
repository.group_permissions.each():
376+
377+
# Get a single group permission from a repository by group slug
378+
repository.group_permissions.get(group_slug)
379+
374380
# Get a list of repository variables from a repository
375381
repository.repository_variables.each():
376382

0 commit comments

Comments
 (0)