Skip to content

Commit e2206f2

Browse files
author
bh9
authored
add administrator_permissions functions for repos to go with the existing ones for projects, and use sets to ensure uniqueness in the resulting lists (atlassian-api#1021)
1 parent 5281141 commit e2206f2

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

atlassian/bitbucket/__init__.py

+35
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,41 @@ def project_groups_with_administrator_permissions(self, key):
995995
"""
996996
return [group["group"]["name"] for group in self.project_groups(key) if group["permission"] == "PROJECT_ADMIN"]
997997

998+
def repo_users_with_administrator_permissions(self, project_key, repo_key):
999+
"""
1000+
Get repository administrators for repository
1001+
:param project_key: The project key
1002+
:param repo_key: The repository key
1003+
:return: List of repo administrators
1004+
"""
1005+
repo_administrators = []
1006+
for user in self.repo_users(project_key, repo_key):
1007+
if user["permission"] == "REPO_ADMIN":
1008+
repo_administrators.append(user)
1009+
for group in self.repo_groups_with_administrator_permissions(project_key, repo_key):
1010+
for user in self.group_members(group):
1011+
repo_administrators.append(user)
1012+
for user in self.project_users_with_administrator_permissions(project_key):
1013+
repo_administrators.append(user)
1014+
# We convert to a set to ensure uniqueness then back to a list for later useability
1015+
return list({user['id']: user for user in repo_administrators}.values())
1016+
1017+
def repo_groups_with_administrator_permissions(self, project_key, repo_key):
1018+
"""
1019+
Get groups with admin permissions
1020+
:param project_key:
1021+
:param repo_key:
1022+
:return:
1023+
"""
1024+
repo_group_administrators = []
1025+
for group in self.repo_groups(project_key, repo_key):
1026+
if group["permission"] == "REPO_ADMIN":
1027+
repo_group_administrators.append(group['group']['name'])
1028+
for group in self.project_groups_with_administrator_permissions(project_key):
1029+
repo_group_administrators.append(group)
1030+
# We convert to a set to ensure uniqueness, then back to a list for later useability
1031+
return list(set(repo_group_administrators))
1032+
9981033
def repo_grant_group_permissions(self, project_key, repo_key, groupname, permission):
9991034
"""
10001035
Grant the specified repository permission to an specific group

0 commit comments

Comments
 (0)