8000 Create a special EventUser · numitor666/github3.py@5c94d61 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5c94d61

Browse files
committed
Create a special EventUser
Events return not a subset of what other things return with respect to users but also extra attributes that don't exist for them. As such, it needs to just be a separate object with a way of retrieving a User.
1 parent 0b2041d commit 5c94d61

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

github3/events.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,25 @@
1313
from .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+
1635
class 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

85103
def _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

123140
def _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):
160176
def _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

Comments
 (0)
0