Skip to content

Commit 83890d2

Browse files
committed
fix: leancloud.Query#get using get ACL permission, not find (#283)
1 parent edf3b5b commit 83890d2

3 files changed

Lines changed: 19 additions & 9 deletions

File tree

leancloud/object_.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,13 +481,22 @@ def clear(self):
481481
def _dump_save(self):
482482
return {k:v.dump() for k,v in iteritems(self._changes)}
483483

484-
def fetch(self):
484+
def fetch(self, select=None, include=None):
485485
"""
486486
从服务器获取当前对象所有的值,如果与本地值不同,将会覆盖本地的值。
487487
488488
:return: 当前对象
489489
"""
490-
response = client.get('/classes/{0}/{1}'.format(self._class_name, self.id), {})
490+
data = {}
491+
if select:
492+
if not isinstance(select, (list, tuple)):
493+
raise TypeError('select parameter must be a list or a tuple')
494+
data['keys'] = ','.join(select)
495+
if include:
496+
if not isinstance(include, (list, tuple)):
497+
raise TypeError('include parameter must be a list or a tuple')
498+
data['include'] = ','.join(include)
499+
response = client.get('/classes/{0}/{1}'.format(self._class_name, self.id), data)
491500
self._update_data(response.json())
492501

493502
def is_new(self):

leancloud/query.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,11 @@ def get(self, object_id):
206206
:return: 查询结果
207207
:rtype: Object
208208
"""
209-
self.equal_to('objectId', object_id)
210-
return self.first()
209+
if not object_id:
210+
raise LeanCloudError(code=101, error='Object not found.')
211+
obj = self._query_class.create_without_data(object_id)
212+
obj.fetch(select=self._select, include=self._include)
213+
return obj
211214

212215
def find(self):
213216
"""

tests/test_object.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,10 @@ def test_fetch(): # type: () -> None
212212
album.set('parent', band)
213213
album.save()
214214

215-
query = leancloud.Query(Album)
216-
album_1 = query.get(album.id)
217-
assert album_1.get('parent').get('name') is None
218-
219-
album_1.get('parent').fetch()
215+
album_1 = Album.create_without_data(album.id)
216+
album_1.fetch(include=['parent'], select=['name', 'parent'])
220217
assert album_1.get('parent').get('name') == 'Nightwish'
218+
assert not album_1.has('title')
221219

222220
album.destroy()
223221
band.destroy()

0 commit comments

Comments
 (0)