From 1bc324c75249f2a459b975aad88a1b45cdab42c0 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 9 May 2019 11:28:31 +0200 Subject: [PATCH 1/2] Implemented new bitbucket repo method The implemented method allows to grant repository permissions to an specified user --- atlassian/bitbucket.py | 16 ++++++++++++++++ docs/bitbucket.rst | 3 +++ 2 files changed, 19 insertions(+) diff --git a/atlassian/bitbucket.py b/atlassian/bitbucket.py index 68da5cc97..c4601ab6b 100644 --- a/atlassian/bitbucket.py +++ b/atlassian/bitbucket.py @@ -106,6 +106,22 @@ def project_grant_user_permissions(self, project_key, username, permission): 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 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/users?permission={permission}&name={username}'.format( + project_key=project_key, + repo_key=repo_key, + permission=permission, + username=username) + 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 3df868288..73c232e9d 100644 --- a/docs/bitbucket.rst +++ b/docs/bitbucket.rst @@ -71,6 +71,9 @@ Manage repositories bitbucket.repo_groups(self, project_key, repo_key, limit=99999, filter_str=None) + # Grant repository permission to an specific user + bitbucket.repo_grant_user_permissions(project_key, repo_key, username, permission) + Groups and admins ----------------- From 1438e2186bacbe22d9a88551ce1c01c73486b6b6 Mon Sep 17 00:00:00 2001 From: pablotoledo Date: Sun, 12 May 2019 19:18:01 +0200 Subject: [PATCH 2/2] group permissions 2 method to grant repo and project permissions to the specied group --- atlassian/bitbucket.py | 34 ++++++++++++++++++++++++++++++++-- docs/bitbucket.rst | 6 ++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/atlassian/bitbucket.py b/atlassian/bitbucket.py index 959bbce0e..f6c3692ce 100644 --- a/atlassian/bitbucket.py +++ b/atlassian/bitbucket.py @@ -95,7 +95,7 @@ def project_grant_user_permissions(self, project_key, username, permission): """ Grant the specified project permission to an specific user :param project_key: project key involved - :param user: user name to be granted + :param username: user name to be granted :param permission: the project permissions available are 'PROJECT_ADMIN', 'PROJECT_WRITE' and 'PROJECT_READ' :return: """ @@ -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 -----------------