Skip to content

Commit

Permalink
Adding new attributes to IssueEvent (#857)
Browse files Browse the repository at this point in the history
See Issue #855 

The class [IssueEvent](https://github.com/PyGithub/PyGithub/blob/master/github/IssueEvent.py) is missing a large number of attributes documented in the [API](https://developer.github.com/v3/issues/events/).

This is also commented about in #653 to a degree

27 of the tests 27 known event types have tests.

**Currently Tested using Issue #30**            
- [x] subscribed
- [x] assigned
- [x] referenced               
- [x] closed                   
- [x] labeled                  

**Currently Tested using Issue/PR #538**
- [x] merged
- [x] mentioned
- [x] review_requested

**Currently Tested using Issue/PR #857**
- [x] reopened
- [x] unassigned
- [x] unlabeled
- [x] renamed
- [x] base_ref_changed
- [x] head_ref_deleted 
- [x] head_ref_restored
- [x] milestoned
- [x] demilestoned
- [x] locked
- [x] unlocked
- [x] review_dismissed
- [x] review_request_removed
- [x] marked_as_duplicate
- [x] unmarked_as_duplicate
- [x] added_to_project       
- [x] moved_columns_in_project
- [x] removed_from_project
- [x] converted_note_to_issue - Note: this event is tied into Issue #866 

This PR is now ready to be merged
  • Loading branch information
allevin authored and sfdye committed Aug 24, 2018
1 parent de6b713 commit 7ac2a2a
Show file tree
Hide file tree
Showing 10 changed files with 1,044 additions and 40 deletions.
3 changes: 3 additions & 0 deletions github/Consts.py
Expand Up @@ -77,3 +77,6 @@

# https://developer.github.com/changes/2018-02-22-label-description-search-preview/
mediaTypeLabelDescriptionSearchPreview = "application/vnd.github.symmetra-preview+json"

# https://developer.github.com/changes/2018-01-10-lock-reason-api-preview/
mediaTypeLockReasonPreview = "application/vnd.github.sailor-v-preview+json"
3 changes: 2 additions & 1 deletion github/Issue.py
Expand Up @@ -397,7 +397,8 @@ def get_events(self):
github.IssueEvent.IssueEvent,
self._requester,
self.url + "/events",
None
None,
headers={'Accept': Consts.mediaTypeLockReasonPreview}
)

def get_labels(self):
Expand Down
129 changes: 129 additions & 0 deletions github/IssueEvent.py
Expand Up @@ -101,6 +101,102 @@ def url(self):
self._completeIfNotSet(self._url)
return self._url.value

@property
def node_id(self):
"""
:type: string
"""
self._completeIfNotSet(self._node_id)
return self._node_id.value

@property
def commit_url(self):
"""
:type: string
"""
self._completeIfNotSet(self._commit_url)
return self._commit_url.value

@property
def label(self):
"""
:type: :class:`github.Label.Label`
"""
self._completeIfNotSet(self._label)
return self._label.value

@property
def assignee(self):
"""
:type: :class:`github.NamedUser.NamedUser`
"""
self._completeIfNotSet(self._assignee)
return self._assignee.value

@property
def assigner(self):
"""
:type: :class:`github.NamedUser.NamedUser`
"""
self._completeIfNotSet(self._assigner)
return self._assigner.value

@property
def review_requester(self):
"""
:type: :class:`github.NamedUser.NamedUser`
"""
self._completeIfNotSet(self._review_requester)
return self._review_requester.value

@property
def requested_reviewer(self):
"""
:type: :class:`github.NamedUser.NamedUser`
"""
self._completeIfNotSet(self._requested_reviewer)
return self._requested_reviewer.value

@property
def milestone(self):
"""
:type: :class:`github.Milestone.Milestone`
"""
self._completeIfNotSet(self._milestone)
return self._milestone.value

@property
def rename(self):
"""
:type: dict
"""
self._completeIfNotSet(self._rename)
return self._rename.value

@property
def rename(self):
"""
:type: dict
"""
self._completeIfNotSet(self._rename)
return self._rename.value

@property
def dismissed_review(self):
"""
:type: dict
"""
self._completeIfNotSet(self._dismissed_review)
return self._dismissed_review.value

@property
def lock_reason(self):
"""
:type: string
"""
self._completeIfNotSet(self._lock_reason)
return self._lock_reason.value

def _initAttributes(self):
self._actor = github.GithubObject.NotSet
self._commit_id = github.GithubObject.NotSet
Expand All @@ -109,6 +205,17 @@ def _initAttributes(self):
self._id = github.GithubObject.NotSet
self._issue = github.GithubObject.NotSet
self._url = github.GithubObject.NotSet
self._node_id = github.GithubObject.NotSet
self._commit_url = github.GithubObject.NotSet
self._label = github.GithubObject.NotSet
self._assignee = github.GithubObject.NotSet
self._assigner = github.GithubObject.NotSet
self._review_requester = github.GithubObject.NotSet
self._requested_reviewer = github.GithubObject.NotSet
self._milestone = github.GithubObject.NotSet
self._rename = github.GithubObject.NotSet
self._dismissed_review = github.GithubObject.NotSet
self._lock_reason = github.GithubObject.NotSet

def _useAttributes(self, attributes):
if "actor" in attributes: # pragma no branch
Expand All @@ -125,3 +232,25 @@ def _useAttributes(self, attributes):
self._issue = self._makeClassAttribute(github.Issue.Issue, attributes["issue"])
if "url" in attributes: # pragma no branch
self._url = self._makeStringAttribute(attributes["url"])
if "node_id" in attributes: # pragma no branch
self._node_id = self._makeStringAttribute(attributes["node_id"])
if "commit_url" in attributes: # pragma no branch
self._commit_url = self._makeStringAttribute(attributes["commit_url"])
if "label" in attributes: # pragma no branch
self._label = self._makeClassAttribute(github.Label.Label, attributes["label"])
if "assignee" in attributes: # pragma no branch
self._assignee = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["assignee"])
if "assigner" in attributes: # pragma no branch
self._assigner = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["assigner"])
if "review_requester" in attributes: # pragma no branch
self._review_requester = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["review_requester"])
if "requested_reviewer" in attributes: # pragma no branch
self._requested_reviewer = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["requested_reviewer"])
if "milestone" in attributes: # pragma no branch
self._milestone = self._makeClassAttribute(github.Milestone.Milestone, attributes["milestone"])
if "rename" in attributes: # pragma no branch
self._rename = self._makeDictAttribute(attributes["rename"])
if "dismissed_review" in attributes: # pragma no branch
self._dismissed_review = self._makeDictAttribute(attributes["dismissed_review"])
if "lock_reason" in attributes: # pragma no branch
self._lock_reason = self._makeStringAttribute(attributes["lock_reason"])
6 changes: 4 additions & 2 deletions github/Repository.py
Expand Up @@ -1925,7 +1925,8 @@ def get_issues_event(self, id):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/issues/events/" + str(id)
self.url + "/issues/events/" + str(id),
headers={'Accept': Consts.mediaTypeLockReasonPreview}
)
return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True)

Expand All @@ -1938,7 +1939,8 @@ def get_issues_events(self):
github.IssueEvent.IssueEvent,
self._requester,
self.url + "/issues/events",
None
None,
headers={'Accept': Consts.mediaTypeLockReasonPreview}
)

def get_key(self, id):
Expand Down

0 comments on commit 7ac2a2a

Please sign in to comment.