8000 Add support for review requests · shalevy1/github3.py@f07a252 · GitHub
[go: up one dir, main page]

Skip to content

Commit f07a252

Browse files
committed
Add support for review requests
Closes sigmavirus24#787
1 parent 6824ebc commit f07a252

File tree

6 files changed

+162
-0
lines changed
  • integration
  • unit
  • 6 files changed

    +162
    -0
    lines changed

    src/github3/pulls.py

    Lines changed: 100 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -194,6 +194,7 @@ class _PullRequest(models.GitHubCore):
    194194
    class_name = '_PullRequest'
    195195

    196196
    def _update_attributes(self, pull):
    197+
    from . import orgs
    197198
    self._api = pull['url']
    198199
    self.assignee = pull['assignee']
    199200
    if self.assignee is not None:
    @@ -217,6 +218,12 @@ def _update_attributes(self, pull):
    217218
    self.merged_at = self._strptime(pull['merged_at'])
    218219
    self.number = pull['number']
    219220
    self.patch_url = pull['patch_url']
    221+
    requested_reviewers = pull.get('requested_reviewers', [])
    222+
    self.requested_reviewers = [
    223+
    users.ShortUser(r, self) for r in requested_reviewers]
    224+
    requested_teams = pull.get('requested_teams', [])
    225+
    self.requested_teams = [
    226+
    orgs.ShortTeam(t, self) for t in requested_teams]
    220227
    self.review_comment_urlt = URITemplate(pull['review_comment_url'])
    221228
    self.review_comments_url = pull['review_comments_url']
    222229
    self.repository = None
    @@ -286,6 +293,29 @@ def create_review_comment(self, body, commit_id, path, position):
    286293
    json = self._json(self._post(url, data=data), 201)
    287294
    return self._instance_or_null(ReviewComment, json)
    288295

    296+
    @requires_auth
    297+
    def create_review_requests(self, reviewers=None, team_reviewers=None):
    298+
    """Ask for reviews on this pull request.
    299+
    300+
    :param list reviewers:
    301+
    The users to which request a review
    302+
    :param list team_reviewers:
    303+
    The teams to which request a review
    304+
    :returns:
    305+
    The pull request on which the reviews were requested
    306+
    :rtype:
    307+
    :class:`~github3.pulls.ShortPullRequest`
    308+
    """
    309+
    url = self._build_url('requested_reviewers', base_url=self._api)
    310+
    data = {}
    311+
    if reviewers is not None:
    312+
    data['reviewers'] = [getattr(r, 'login', r) for r in reviewers]
    313+
    if team_reviewers is not None:
    314+
    data['team_reviewers'] = [
    315+
    getattr(t, 'slug', t) for t in team_reviewers]
    316+
    json = self._json(self._post(url, data=data), 201)
    317+
    return self._instance_or_null(ShortPullRequest, json)
    318+
    289319
    @requires_auth
    290320
    def create_review(self, body, commit_id=None, event=None, comments=None):
    291321
    """Create a review comment on this pull request.
    @@ -334,6 +364,28 @@ def create_review(self, body, commit_id=None, event=None, comments=None):
    334364
    json = self._json(self._post(url, data=data), 200)
    335365
    return self._instance_or_null(PullReview, json)
    336366

    367+
    @requires_auth
    368+
    def delete_review_requests(self, reviewers=None, team_reviewers=None):
    369+
    """Cancel review requests on this pull request.
    370+
    371+
    :param list reviewers:
    372+
    The users whose review is no longer requested
    373+
    :param list team_reviewers:
    374+
    The teams whose review is no longer requested
    375+
    :returns:
    376+
    True if successful, False otherwise
    377+
    :rtype:
    378+
    bool
    379+
    """
    380+
    url = self._build_url('requested_reviewers', base_url=self._api)
    381+
    data = {}
    382+
    if reviewers is not None:
    383+
    data['reviewers'] = [getattr(r, 'login', r) for r in reviewers]
    384+
    if team_reviewers is not None:
    385+
    data['team_reviewers'] = [
    386+
    getattr(t, 'slug', t) for t in team_reviewers]
    387+
    return self._boolean(self._delete(url, data=dumps(data)), 200, 404)
    388+
    337389
    def diff(self):
    338390
    """Return the diff.
    339391
    @@ -495,6 +547,18 @@ def review_comments(self, number=-1, etag=None):
    495547
    url = self._build_url('comments', base_url=self._api)
    496548
    return self._iter(int(number), url, ReviewComment, etag=etag)
    497549

    550+
    def review_requests(self):
    551+
    """Retrieve the review requests associated with this pull request.
    552+
    553+
    :returns:
    554+
    review requests associated with this pull request
    555+
    :rtype:
    556+
    :class:`~github3.pulls.ReviewRequests`
    557+
    """
    558+
    url = self._build_url('requested_reviewers', base_url=self._api)
    559+
    json = self._json(self._get(url), 200)
    560+
    return self._instance_or_null(ReviewRequests, json)
    561+
    498562
    def reviews(self, number=-1, etag=None):
    499563
    """Iterate over the reviews associated with this pull request.
    500564
    @@ -748,6 +812,16 @@ class ShortPullRequest(_PullRequest):
    748812
    A :class:`~github3.repos.repo.ShortRepository` from the :attr:`base`
    749813
    instance.
    750814
    815+
    .. attribute:: requested_reviewers
    816+
    817+
    A list of :class:`~github3.users.ShortUser` from which a review was
    818+
    requested.
    819+
    820+
    .. attribute:: requested_teams
    821+
    822+
    A list of :class:`~github3.orgs.ShortTeam` from which a review was
    823+
    requested.
    824+
    751825
    .. attribute:: review_comment_urlt
    752826
    753827
    A URITemplate instance that expands to provide the review comment URL
    @@ -1037,3 +1111,29 @@ def reply(self, body):
    10371111
    'body': body, 'in_reply_to': in_reply_to
    10381112
    }), 201)
    10391113
    return self._instance_or_null(ReviewComment, json)
    1114+
    1115+
    1116+
    class ReviewRequests(models.GitHubCore):
    1117+
    """Object representing review requests in the GitHub API.
    1118+
    1119+
    .. attribute:: teams
    1120+
    1121+
    The list of teams that were requested a review
    1122+
    1123+
    .. attribute:: users
    1124+
    1125+
    The list of users that were requested a review
    1126+
    1127+
    Please see GitHub's `Review Request Documentation`_ for more information.
    1128+
    1129+
    .. _Review Request Documentation:
    1130+
    https://developer.github.com/v3/pulls/review_requests/
    1131+
    """
    1132+
    def _update_attributes(self, requests):
    1133+
    from . import orgs
    1134+
    self.teams = [orgs.ShortTeam(t, self) for t in requests['teams']]
    1135+
    self.users = [users.ShortUser(u, self) for u in requests['users']]
    1136+
    1137+
    def _repr(self):
    1138+
    return '<Review Requests [users: {0}, teams: {1}]>'.format(
    1139+
    len(self.users), len(self.teams))

    tests/cassettes/PullRequest_create_review_requests.json

    Lines changed: 1 addition & 0 deletions
    Large diffs are not rendered by default.
    Lines changed: 1 addition & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -0,0 +1 @@
    1+
    {"http_interactions": [{"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "User-Agent": ["github3.py/1.1.0"], "Accept-Charset": ["utf-8"], "Connection": ["keep-alive"], "Content-Type": ["application/json"], "Authorization": ["token <AUTH_TOKEN>"]}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/873"}, "response": {"body": {"string": "", "base64_string": "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", "encoding": "utf-8"}, "headers": {"X-XSS-Protection": ["1; mode=block"], "Content-Security-Policy": ["default-src 'none'"], "Access-Control-Expose-Headers": ["ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"], "Transfer-Encoding": ["chunked"], "Last-Modified": ["Tue, 31 Jul 2018 12:37:29 GMT"], "Access-Control-Allow-Origin": ["*"], "X-Frame-Options": ["deny"], "Status": ["200 OK"], "X-GitHub-Request-Id": ["9746:3FAC:7DC188:102C2C9:5B605840"], "ETag": ["W/\"cc4210ad9f1cd12d4300e31b40a12398\""], "Date": ["Tue, 31 Jul 2018 12:38:25 GMT"], "X-RateLimit-Remaining": ["4995"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "Server": ["GitHub.com"], "X-OAuth-Scopes": ["public_repo, read:user"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "X-Content-Type-Options": ["nosniff"], "Content-Encoding": ["gzip"], "X-Runtime-rack": ["0.225128"], "Vary": ["Accept, Authorization, Cookie, X-GitHub-OTP"], "X-RateLimit-Limit": ["5000"], "Cache-Control": ["private, max-age=60, s-maxage=60"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Type": ["application/json; charset=utf-8"], "X-Accepted-OAuth-Scopes": [""], "X-RateLimit-Reset": ["1533044057"]}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/873"}, "recorded_at": "2018-07-31T12:38:25"}, {"request": {"body": {"string": "{\"reviewers\": [\"sigmavirus24\"]}", "encoding": "utf-8"}, "headers": {"Content-Length": ["31"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "User-Agent": ["github3.py/1.1.0"], "Accept-Charset": ["utf-8"], "Connection": ["keep-alive"], "Content-Type": ["application/json"], "Authorization": ["token <AUTH_TOKEN>"]}, "method": "DELETE", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/873/requested_reviewers"}, "response": {"body": {"string": "", "base64_string": "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", "encoding": "utf-8"}, "headers": {"X-XSS-Protection": ["1; mode=block"], "Content-Security-Policy": ["default-src 'none'"], "Access-Control-Expose-Headers": ["ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"], "Transfer-Encoding": ["chunked"], "Access-Control-Allow-Origin": ["*"], "X-Frame-Options": ["deny"], "Status": ["200 OK"], "X-GitHub-Request-Id": ["9746:3FAC:7DC1C0:102C315:5B605841"], "ETag": ["W/\"0962ba2945f8ad21491ca6d3038d3bd3\""], "Date": ["Tue, 31 Jul 2018 12:38:25 GMT"], "X-RateLimit-Remaining": ["4994"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "Server": ["GitHub.com"], "X-OAuth-Scopes": ["public_repo, read:user"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "X-Content-Type-Options": ["nosniff"], "Content-Encoding": ["gzip"], "X-Runtime-rack": ["0.286925"], "Vary": ["Accept, Authorization, Cookie, X-GitHub-OTP"], "X-RateLimit-Limit": ["5000"], "Cache-Control": ["private, max-age=60, s-maxage=60"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Type": ["application/json; charset=utf-8"], "X-Accepted-OAuth-Scopes": [""], "X-RateLimit-Reset": ["1533044057"]}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/873/requested_reviewers"}, "recorded_at": "2018-07-31T12:38:26"}], "recorded_with": "betamax/0.8.1"}

    0 commit comments

    Comments
     (0)
    0