Add "get_repo_permission" to Team class (#1416)

* Add "get_repo_permission" to Team class

* second attempt:
- accept repo name or repo object
- return github.Permissions.Permissions object
- try and following CONTRIBUTING.md better

* add missing import to tests
patch replay data with permission data

* assert a specific permission rather than just the type

Fixes #1415
This commit is contained in:
Adrian Bridgett
2020-03-13 11:01:16 +11:00
committed by GitHub
parent e44d11d565
commit 219bde53d3
4 changed files with 52 additions and 1 deletions
+3
View File
@@ -120,3 +120,6 @@ issueTimelineEventsPreview = "application/vnd.github.mockingbird-preview"
# https://developer.github.com/changes/2019-02-14-draft-pull-requests/
draftPullRequestPreview = "application/vnd.github.shadow-cat-preview+json"
# https://developer.github.com/v3/teams/#check-if-a-team-manages-a-repository
teamRepositoryPermissions = "application/vnd.github.v3.repository+json"
+24
View File
@@ -47,6 +47,7 @@ import github.Organization
import github.PaginatedList
import github.Repository
import github.TeamDiscussion
from github.GithubException import UnknownObjectException
from . import Consts
@@ -210,6 +211,29 @@ class Team(github.GithubObject.CompletableGithubObject):
"PUT", self.url + "/repos/" + repo._identity
)
def get_repo_permission(self, repo):
"""
:calls: `GET /teams/:id/repos/:org/:repo <http://developer.github.com/v3/orgs/teams>`_
:param repo: string or :class:`github.Repository.Repository`
:rtype: None or :class:`github.Permissions.Permissions`
"""
assert isinstance(repo, github.Repository.Repository) or isinstance(
repo, str
), repo
if isinstance(repo, github.Repository.Repository):
repo = repo._identity
try:
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/repos/" + repo,
headers={"Accept": Consts.teamRepositoryPermissions},
)
return github.Permissions.Permissions(
self._requester, headers, data["permissions"], completed=True
)
except UnknownObjectException:
return None
def set_repo_permission(self, repo, permission):
"""
:calls: `PUT /teams/:id/repos/:org/:repo <http://developer.github.com/v3/orgs/teams>`_
File diff suppressed because one or more lines are too long
+3
View File
@@ -114,11 +114,14 @@ class Team(Framework.TestCase):
repo = self.org.get_repo("FatherBeaver")
self.assertListKeyEqual(self.team.get_repos(), None, [])
self.assertFalse(self.team.has_in_repos(repo))
self.assertIsNone(self.team.get_repo_permission(repo))
self.team.add_to_repos(repo)
self.assertListKeyEqual(
self.team.get_repos(), lambda r: r.name, ["FatherBeaver"]
)
self.assertTrue(self.team.has_in_repos(repo))
permissions = self.team.get_repo_permission(repo)
self.assertTrue(permissions.pull)
self.team.remove_from_repos(repo)
self.assertListKeyEqual(self.team.get_repos(), None, [])
self.assertFalse(self.team.has_in_repos(repo))