diff --git a/atlassian/bitbucket.py b/atlassian/bitbucket.py index 3f2f48764..f6c3692ce 100644 --- a/atlassian/bitbucket.py +++ b/atlassian/bitbucket.py @@ -104,13 +104,27 @@ def project_grant_user_permissions(self, project_key, username, permission): permission=permission, username=username) return self.put(url) + + def project_grant_group_permissions(self, project_key, groupname, permission): + """ + Grant the specified project permission to an specific group + :param project_key: project key involved + :param groupname: group to be granted + :param permission: the project permissions available are 'PROJECT_ADMIN', 'PROJECT_WRITE' and 'PROJECT_READ' + :return: + """ + url = 'rest/api/1.0/projects/{project_key}/permissions/groups?permission={permission}&name={groupname}'.format( + project_key=project_key, + permission=permission, + groupname=groupname) + return self.put(url) def repo_grant_user_permissions(self, project_key, repo_key, username, permission): """ Grant the specified repository permission to an specific user :param project_key: project key involved :param repo_key: repository key involved (slug) - :param user: user name to be granted + :param username: user name to be granted :param permission: the repository permissions available are 'REPO_ADMIN', 'REPO_WRITE' and 'REPO_READ' :return: """ @@ -121,6 +135,22 @@ def repo_grant_user_permissions(self, project_key, repo_key, username, permissio username=username) return self.put(url) + def repo_grant_group_permissions(self, project_key, repo_key, groupname, permission): + """ + Grant the specified repository permission to an specific group + :param project_key: project key involved + :param repo_key: repository key involved (slug) + :param groupname: group to be granted + :param permission: the repository permissions available are 'REPO_ADMIN', 'REPO_WRITE' and 'REPO_READ' + :return: + """ + url = 'rest/api/1.0/projects/{project_key}/repos/{repo_key}/permissions/groups?permission={permission}&name={groupname}'.format( + project_key=project_key, + repo_key=repo_key, + permission=permission, + groupname=groupname) + return self.put(url) + def project_groups(self, key, limit=99999, filter_str=None): """ Get Project Groups diff --git a/docs/bitbucket.rst b/docs/bitbucket.rst index 73c232e9d..3e69e9af2 100644 --- a/docs/bitbucket.rst +++ b/docs/bitbucket.rst @@ -33,6 +33,9 @@ Manage projects # Grant project permission to an specific user bitbucket.project_grant_user_permissions(project_key, username, permission) + # Grant project permission to an specific group + bitbucket.project_grant_group_permissions(project_key, groupname, permission) + Manage repositories --------------- @@ -74,6 +77,9 @@ Manage repositories # Grant repository permission to an specific user bitbucket.repo_grant_user_permissions(project_key, repo_key, username, permission) + # Grant repository permission to an specific group + bitbucket.repo_grant_group_permissions(project_key, repo_key, groupname, permission) + Groups and admins -----------------