88"""
99from __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):
4848handler = _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)``
5353self .repo = event .get ('repo' )
5454if self .repo is not None :
@@ -74,94 +74,102 @@ def is_public(self):
7474return self .public
7575
7676
77- def _commitcomment (payload ):
77+ def _commitcomment (payload , session ):
7878from .repos .comment import RepoComment
7979if payload .get ('comment' ):
80- payload ['comment' ]= RepoComment (payload ['comment' ],None )
80+ payload ['comment' ]= RepoComment (payload ['comment' ],session )
8181return payload
8282
8383
84- def _follow (payload ):
84+ def _follow (payload , session ):
8585from .users import User
8686if payload .get ('target' ):
87- payload ['target' ]= User (payload ['target' ],None )
87+ payload ['target' ]= User (payload ['target' ],session )
8888return payload
8989
9090
91- def _forkev (payload ):
91+ def _forkev (payload , session ):
9292from .repos import Repository
9393if payload .get ('forkee' ):
94- payload ['forkee' ]= Repository (payload ['forkee' ],None )
94+ payload ['forkee' ]= Repository (payload ['forkee' ],session )
9595return payload
9696
9797
98- def _gist (payload ):
98+ def _gist (payload , session ):
9999from .gists import Gist
100100if payload .get ('gist' ):
101- payload ['gist' ]= Gist (payload ['gist' ],None )
101+ payload ['gist' ]= Gist (payload ['gist' ],session )
102102return payload
103103
104104
105- def _issuecomm (payload ):
105+ def _issuecomm (payload , session ):
106106from .issues import Issue
107107from .issues .comment import IssueComment
108108if payload .get ('issue' ):
109- payload ['issue' ]= Issue (payload ['issue' ],None )
109+ payload ['issue' ]= Issue (payload ['issue' ],session )
110110if payload .get ('comment' ):
111- payload ['comment' ]= IssueComment (payload ['comment' ],None )
111+ payload ['comment' ]= IssueComment (payload ['comment' ],session )
112112return payload
113113
114114
115- def _issueevent (payload ):
115+ def _issueevent (payload , session ):
116116from .issues import Issue
117117if payload .get ('issue' ):
118- payload ['issue' ]= Issue (payload ['issue' ],None )
118+ payload ['issue' ]= Issue (payload ['issue' ],session )
119119return payload
120120
121121
122- def _member (payload ):
122+ def _member (payload , session ):
123123from .users import User
124124if payload .get ('member' ):
125- payload ['member' ]= User (payload ['member' ],None )
125+ payload ['member' ]= User (payload ['member' ],session )
126126return payload
127127
128128
129- def _pullreqev (payload ):
129+ def _pullreqev (payload , session ):
130130from .pulls import PullRequest
131131if payload .get ('pull_request' ):
132- payload ['pull_request' ]= PullRequest (payload ['pull_request' ],None )
132+ payload ['pull_request' ]= PullRequest (payload ['pull_request' ],
133+ session )
133134return 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 )
140148return payload
141149
142150
143- def _release (payload ):
151+ def _release (payload , session ):
144152from .repos .release import Release
145153release = payload .get ('release' )
146154if release :
147- payload ['release' ]= Release (release )
155+ payload ['release' ]= Release (release , session )
148156return payload
149157
150158
151- def _team (payload ):
159+ def _team (payload , session ):
152160from .orgs import Team
153161from .repos import Repository
154162from .users import User
155163if payload .get ('team' ):
156- payload ['team' ]= Team (payload ['team' ],None )
164+ payload ['team' ]= Team (payload ['team' ],session )
157165if payload .get ('repo' ):
158- payload ['repo' ]= Repository (payload ['repo' ],None )
166+ payload ['repo' ]= Repository (payload ['repo' ],session )
159167if payload .get ('sender' ):
160- payload ['sender' ]= User (payload ['sender' ],None )
168+ payload ['sender' ]= User (payload ['sender' ],session )
161169return payload
162170
163171
164- def identity (x ):
172+ def identity (x , session ):
165173return 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 ,