13
13
from .models import GitHubCore
14
14
15
15
16
+ class EventUser (GitHubCore ):
17
+ """The class that represents the user information returned in Events."""
18
+
19
+ def _update_attributes (self , user ):
20
+ self .avatar_url = user ['avatar_url' ]
21
+ self .display_login = user ['display_login' ]
22
+ self .gravatar_id = user ['id' ]
23
+ self .id = user ['id' ]
24
+ self .login = user ['login' ]
25
+ self ._api = self .url = user ['url' ]
26
+
27
+ def to_user (self ):
28
+ """Retrieve a full User object for this EventUser."""
29
+ from . import users
30
+ url = self ._build_url ('users' , self .login )
31
+ json = self ._json (self ._get (url ), 200 )
32
+ return self ._instance_or_null (users .User , json )
33
+
34
+
16
35
class Event (GitHubCore ):
17
36
18
37
"""The :class:`Event <Event>` object. It structures and handles the data
@@ -37,10 +56,9 @@ def _update_attributes(self, event):
37
56
# not want to do:
38
57
event = copy .deepcopy (event )
39
58
40
- from .users import User
41
59
from .orgs import Organization
42
60
#: :class:`User <github3.users.User>` object representing the actor.
43
- self .actor = self ._class_attribute (event , 'actor' , User )
61
+ self .actor = self ._class_attribute (event , 'actor' , EventUser )
44
62
#: datetime object representing when the event was created.
45
63
self .created_at = self ._strptime_attribute (event , 'created_at' )
46
64
@@ -83,9 +101,8 @@ def _commitcomment(payload, session):
83
101
84
102
85
103
def _follow (payload , session ):
86
- from .users import User
87
104
if payload .get ('target' ):
88
- payload ['target' ] = User (payload ['target' ], session )
105
+ payload ['target' ] = EventUser (payload ['target' ], session )
89
106
return payload
90
107
91
108
@@ -121,9 +138,8 @@ def _issueevent(payload, session):
121
138
122
139
123
140
def _member (payload , session ):
124
- from .users import User
125
141
if payload .get ('member' ):
126
- payload ['member' ] = User (payload ['member' ], session )
142
+ payload ['member' ] = EventUser (payload ['member' ], session )
127
143
return payload
128
144
129
145
@@ -160,13 +176,12 @@ def _release(payload, session):
160
176
def _team (payload , session ):
161
177
from .orgs import Team
162
178
from .repos import Repository
163
- from .users import User
164
179
if payload .get ('team' ):
165
180
payload ['team' ] = Team (payload ['team' ], session )
166
181
if payload .get ('repo' ):
167
182
payload ['repo' ] = Repository (payload ['repo' ], session )
168
183
if payload .get ('sender' ):
169
- payload ['sender' ] = User (payload ['sender' ], session )
184
+ payload ['sender' ] = EventUser (payload ['sender' ], session )
170
185
return payload
171
186
172
187
0 commit comments