fix lookup by id

This commit is contained in:
j 2016-02-14 16:05:35 +05:30
commit 4cabfd0476
2 changed files with 16 additions and 12 deletions

View file

@ -247,17 +247,20 @@ def findMetadata(data):
elif key == 'id':
import user.models
items = {}
for m in user.models.Metadata.query.filter_by(item_id=data[key]):
if m.data_hash not in items:
items[m.data_hash] = m.data
items[m.data_hash]['users'] = [m.user_id]
j = items[m.data_hash]
for key in [k['id'] for k in settings.config['itemKeys'] if isinstance(k['type'], list)]:
if key in j and not isinstance(j[key], list):
j[key] = [j[key]] if j[key] else []
else:
items[m.data_hash]['users'].append(m.user_id)
response['items'] = list(items.values())
for u in user.models.User.query.filter_by(peered=True):
peer = utils.get_peer(u.id)
if data[key] in peer.library:
h = peer.get_metahash(data[key])
if h not in items:
items[h] = peer.library[data[key]].get('meta', {}).copy()
items[h]['users'] = [u.id]
j = items[h]
for key in [k['id'] for k in settings.config['itemKeys'] if isinstance(k['type'], list)]:
if key in j and not isinstance(j[key], list):
j[key] = [j[key]] if j[key] else []
else:
items[h]['users'].append(u.id)
response['items'] = list(items.values())
return response
actions.register(findMetadata)