1313from .models import GitHubCore
1414
1515
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+
1635class Event (GitHubCore ):
1736
1837 """The :class:`Event <Event>` object. It structures and handles the data
@@ -37,10 +56,9 @@ def _update_attributes(self, event):
3756 # not want to do:
3857 event = copy .deepcopy (event )
3958
40- from .users import User
4159 from .orgs import Organization
4260 #: :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 )
4462 #: datetime object representing when the event was created.
4563 self .created_at = self ._strptime_attribute (event , 'created_at' )
4664
@@ -83,9 +101,8 @@ def _commitcomment(payload, session):
83101
84102
85103def _follow (payload , session ):
86- from .users import User
87104 if payload .get ('target' ):
88- payload ['target' ] = User (payload ['target' ], session )
105+ payload ['target' ] = EventUser (payload ['target' ], session )
89106 return payload
90107
91108
@@ -121,9 +138,8 @@ def _issueevent(payload, session):
121138
122139
123140def _member (payload , session ):
124- from .users import User
125141 if payload .get ('member' ):
126- payload ['member' ] = User (payload ['member' ], session )
142+ payload ['member' ] = EventUser (payload ['member' ], session )
127143 return payload
128144
129145
@@ -160,13 +176,12 @@ def _release(payload, session):
160176def _team (payload , session ):
161177 from .orgs import Team
162178 from .repos import Repository
163- from .users import User
164179 if payload .get ('team' ):
165180 payload ['team' ] = Team (payload ['team' ], session )
166181 if payload .get ('repo' ):
167182 payload ['repo' ] = Repository (payload ['repo' ], session )
168183 if payload .get ('sender' ):
169- payload ['sender' ] = User (payload ['sender' ], session )
184+ payload ['sender' ] = EventUser (payload ['sender' ], session )
170185 return payload
171186
172187
0 commit comments