Skip to content

Commit 5f7df73

Browse files
Merge pull request #155 from box/register_subclasses
Register subclasses
2 parents 3f5908c + 925cbae commit 5f7df73

File tree

3 files changed

+35
-19
lines changed

3 files changed

+35
-19
lines changed

boxsdk/auth/jwt_auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from cryptography.hazmat.primitives import serialization
1111
import jwt
1212

13-
from boxsdk.util.compat import total_seconds
1413
from .oauth2 import OAuth2
14+
from ..util.compat import total_seconds
1515

1616

1717
class JWTAuth(OAuth2):

boxsdk/client/client.py

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@
66
from ..config import API
77
from ..session.box_session import BoxSession
88
from ..network.default_network import DefaultNetwork
9-
from ..object.user import User
10-
from ..object.folder import Folder
119
from ..object.search import Search
1210
from ..object.events import Events
13-
from ..object.file import File
14-
from ..object.group import Group
15-
from ..object.group_membership import GroupMembership
1611
from ..util.shared_link import get_shared_link_header
1712
from ..util.translator import Translator
1813

@@ -67,7 +62,7 @@ def folder(self, folder_id):
6762
:rtype:
6863
:class:`Folder`
6964
"""
70-
return Folder(session=self._session, object_id=folder_id)
65+
return Translator().translate('folder')(session=self._session, object_id=folder_id)
7166

7267
def file(self, file_id):
7368
"""
@@ -82,7 +77,7 @@ def file(self, file_id):
8277
:rtype:
8378
:class:`File`
8479
"""
85-
return File(session=self._session, object_id=file_id)
80+
return Translator().translate('file')(session=self._session, object_id=file_id)
8681

8782
def user(self, user_id='me'):
8883
"""
@@ -97,7 +92,7 @@ def user(self, user_id='me'):
9792
:rtype:
9893
:class:`User`
9994
"""
100-
return User(session=self._session, object_id=user_id)
95+
return Translator().translate('user')(session=self._session, object_id=user_id)
10196

10297
def group(self, group_id):
10398
"""
@@ -112,7 +107,7 @@ def group(self, group_id):
112107
:rtype:
113108
:class:`Group`
114109
"""
115-
return Group(session=self._session, object_id=group_id)
110+
return Translator().translate('group')(session=self._session, object_id=group_id)
116111

117112
def users(self, limit=None, offset=0, filter_term=None):
118113
"""
@@ -143,7 +138,12 @@ def users(self, limit=None, offset=0, filter_term=None):
143138
params['filter_term'] = filter_term
144139
box_response = self._session.get(url, params=params)
145140
response = box_response.json()
146-
return [User(self._session, item['id'], item) for item in response['entries']]
141+
user_class = Translator().translate('user')
142+
return [user_class(
143+
session=self._session,
144+
object_id=item['id'],
145+
response_object=item,
146+
) for item in response['entries']]
147147

148148
def search(
149149
self,
@@ -226,7 +226,10 @@ def group_membership(self, group_membership_id):
226226
:rtype:
227227
:class:`GroupMembership`
228228
"""
229-
return GroupMembership(session=self._session, object_id=group_membership_id)
229+
return Translator().translate('group_membership')(
230+
session=self._session,
231+
object_id=group_membership_id,
232+
)
230233

231234
def groups(self):
232235
"""
@@ -240,7 +243,12 @@ def groups(self):
240243
url = '{0}/groups'.format(API.BASE_API_URL)
241244
box_response = self._session.get(url)
242245
response = box_response.json()
243-
return [Group(self._session, item['id'], item) for item in response['entries']]
246+
group_class = Translator().translate('group')
247+
return [group_class(
248+
session=self._session,
249+
object_id=item['id'],
250+
response_object=item,
251+
) for item in response['entries']]
244252

245253
def create_group(self, name):
246254
"""
@@ -263,7 +271,11 @@ def create_group(self, name):
263271
}
264272
box_response = self._session.post(url, data=json.dumps(body_attributes))
265273
response = box_response.json()
266-
return Group(self._session, response['id'], response)
274+
return Translator().translate('group')(
275+
session=self._session,
276+
object_id=response['id'],
277+
response_object=response,
278+
)
267279

268280
def get_shared_item(self, shared_link, password=None):
269281
"""
@@ -290,9 +302,9 @@ def get_shared_item(self, shared_link, password=None):
290302
headers=get_shared_link_header(shared_link, password),
291303
).json()
292304
return Translator().translate(response['type'])(
293-
self._session.with_shared_link(shared_link, password),
294-
response['id'],
295-
response,
305+
session=self._session.with_shared_link(shared_link, password),
306+
object_id=response['id'],
307+
response_object=response,
296308
)
297309

298310
def make_request(self, method, url, **kwargs):
@@ -342,7 +354,11 @@ def create_user(self, name, login=None, **user_attributes):
342354
user_attributes['is_platform_access_only'] = True
343355
box_response = self._session.post(url, data=json.dumps(user_attributes))
344356
response = box_response.json()
345-
return User(self._session, response['id'], response)
357+
return Translator().translate('user')(
358+
session=self._session,
359+
object_id=response['id'],
360+
response_object=response,
361+
)
346362

347363
def as_user(self, user):
348364
"""

boxsdk/object/base_api_json_object.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class BaseAPIJSONObjectMeta(type):
1515
"""
1616
def __init__(cls, name, bases, attrs):
1717
super(BaseAPIJSONObjectMeta, cls).__init__(name, bases, attrs)
18-
item_type = attrs.get('_item_type', None)
18+
item_type = getattr(cls, '_item_type', None)
1919
if item_type is not None:
2020
Translator().register(item_type, cls)
2121

0 commit comments

Comments
 (0)