8000 Add sessions to Events and event payload members · chaporgin/github3.py@54c5e7f · GitHub
[go: up one dir, main page]

Skip to content

Commit 54c5e7f

Browse files
committed
Add sessions to Events and event payload members
By making Events subclass GitHubCore, it will be passed a session when created. When that happens, any element of the payload that we convert to a github3 object will also have the same session. Fixes sigmavirus24#303 (cherry picked from commit f651097) Conflicts: github3/events.py
1 parent 1c5e1a1 commit 54c5e7f

File tree

1 file changed

+40
-32
lines changed

1 file changed

+40
-32
lines changed

github3/events.py

Lines changed: 40 additions & 32 deletions
17AE
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
"""
99
from __future__ import unicode_literals
1010

11-
from .models import GitHubObject
11+
from .models import GitHubCore
1212

1313

14-
class Event(GitHubObject):
14+
class Event(GitHubCore):
1515

1616
"""The :class:`Event <Event>` object. It structures and handles the data
1717
returned by via the `Events <http://developer.github.com/v3/events>`_
@@ -48,7 +48,7 @@ def __init__(self, event):
4848
handler = _payload_handlers.get(self.type, identity)
4949
#: Dictionary with the payload. Payload structure is defined by type_.
5050
# _type: http://developer.github.com/v3/events/types
51-
self.payload = handler(event.get('payload'))
51+
self.payload = handler(event.get('payload'), self)
5252
#: Return ``tuple(owner, repository_name)``
5353
self.repo = event.get('repo')
5454
if self.repo is not None:
@@ -74,94 +74,102 @@ def is_public(self):
7474
return self.public
7575

7676

77-
def _commitcomment(payload):
77+
def _commitcomment(payload, session):
7878
from .repos.comment import RepoComment
7979
if payload.get('comment'):
80-
payload['comment'] = RepoComment(payload['comment'], None)
80+
payload['comment'] = RepoComment(payload['comment'], session)
8181
return payload
8282

8383

84-
def _follow(payload):
84+
def _follow(payload, session):
8585
from .users import User
8686
if payload.get('target'):
87-
payload['target'] = User(payload['target'], None)
87+
payload['target'] = User(payload['target'], session)
8888
return payload
8989

9090

91-
def _forkev(payload):
91+
def _forkev(payload, session):
9292
from .repos import Repository
9393
if payload.get('forkee'):
94-
payload['forkee'] = Repository(payload['forkee'], None)
94+
payload['forkee'] = Repository(payload['forkee'], session)
9595
return payload
9696

9797

98-
def _gist(payload):
98+
def _gist(payload, session):
9999
from .gists import Gist
100100
if payload.get('gist'):
101-
payload['gist'] = Gist(payload['gist'], None)
101+
payload['gist'] = Gist(payload['gist'], session)
102102
return payload
103103

104104

105-
def _issuecomm(payload):
105+
def _issuecomm(payload, session):
106106
from .issues import Issue
107107
from .issues.comment import IssueComment
108108
if payload.get('issue'):
109-
payload['issue'] = Issue(payload['issue'], None)
109+
payload['issue'] = Issue(payload['issue'], session)
110110
if payload.get('comment'):
111-
payload['comment'] = IssueComment(payload['comment'], None)
111+
payload['comment'] = IssueComment(payload['comment'], session)
112112
return payload
113113

114114

115-
def _issueevent(payload):
115+
def _issueevent(payload, session):
116116
from .issues import Issue
117117
if payload.get('issue'):
118-
payload['issue'] = Issue(payload['issue'], None)
118+
payload['issue'] = Issue(payload['issue'], session)
119119
return payload
120120

121121

122-
def _member(payload):
122+
def _member(payload, session):
123123
from .users import User
124124
if payload.get('member'):
125-
payload['member'] = User(payload['member'], None)
125+
payload['member'] = User(payload['member'], session)
126126
return payload
127127

128128

129-
def _pullreqev(payload):
129+
def _pullreqev(payload, session):
130130
from .pulls import PullRequest
131131
if payload.get('pull_request'):
132-
payload['pull_request'] = PullRequest(payload['pull_request'], None)
132+
payload['pull_request'] = PullRequest(payload['pull_request'],
133+
session)
133134
return payload
134135

135136

136-
def _pullreqcomm(payload):
137-
from .pulls import ReviewComment
138-
if payload.get('comment'):
139-
payload['comment'] = ReviewComment(payload['comment'], None)
137+
def _pullreqcomm(payload, session):
138+
from .pulls import PullRequest, ReviewComment
139+
# Transform the Pull Request attribute
140+
pull = payload.get('pull_request')
141+
if pull:
142+
payload['pull_request'] = PullRequest(pull, session)
143+
144+
# Transform the Comment attribute
145+
comment = payload.get('comment')
146+
if comment:
147+
payload['comment'] = ReviewComment(comment, session)
140148
return payload
141149

142150

143-
def _release(payload):
151+
def _release(payload, session):
144152
from .repos.release import Release
145153
release = payload.get('release')
146154
if release:
147-
payload['release'] = Release(release)
155+
payload['release'] = Release(release, session)
148156
return payload
149157

150158

151-
def _team(payload):
159+
def _team(payload, session):
152160
from .orgs import Team
153161
from .repos import Repository
154162
from .users import User
155163
if payload.get('team'):
156-
payload['team'] = Team(payload['team'], None)
164+
payload['team'] = Team(payload['team'], session)
157165
if payload.get('repo'):
158-
payload['repo'] = Repository(payload['repo'], None)
166+
payload['repo'] = Repository(payload['repo'], session)
159167
if payload.get('sender'):
160-
payload['sender'] = User(payload['sender'], None)
168+
payload['sender'] = User(payload['sender'], session)
161169
return payload
162170

163171

164-
def identity(x):
172+
def identity(x, session):
165173
return x
166174

167175

@@ -177,7 +185,7 @@ def identity(x):
177185
'IssueCommentEvent': _issuecomm,
178186
'IssuesEvent': _issueevent,
179187
'MemberEvent': _member,
180-
'PublicEvent': lambda x: '',
188+
'PublicEvent': identity,
181189
'PullRequestEvent': _pullreqev,
182190
'PullRequestReviewCommentEvent': _pullreqcomm,
183191
'PushEvent': identity,

0 commit comments

Comments
 (0)
0