Added "library.tree" event/api call

This commit is contained in:
Dean Gardiner
2014-08-20 14:55:34 +12:00
parent a821d85bf2
commit a366d57278
+41
View File
@@ -11,10 +11,13 @@ class Library(LibraryBase):
def __init__(self):
addEvent('library.title', self.title)
addEvent('library.related', self.related)
addEvent('library.tree', self.tree)
addEvent('library.root', self.root)
addApiView('library.query', self.queryView)
addApiView('library.related', self.relatedView)
addApiView('library.tree', self.treeView)
def queryView(self, media_id, **kwargs):
db = get_db()
@@ -32,6 +35,14 @@ class Library(LibraryBase):
'result': fireEvent('library.related', media, single = True)
}
def treeView(self, media_id, **kwargs):
db = get_db()
media = db.get('id', media_id)
return {
'result': fireEvent('library.tree', media, single = True)
}
def title(self, library):
return fireEvent(
'library.query',
@@ -64,3 +75,33 @@ class Library(LibraryBase):
cur = db.get('id', cur['parent_id'])
return cur
def tree(self, media):
result = media
db = get_db()
# TODO this probably should be using an index?
items = [
item['doc']
for item in db.all('media', with_doc = True)
if item['doc'].get('parent_id') == media['_id']
]
keys = []
for item in items:
key = item['type'] + 's'
if key not in result:
result[key] = {}
if key not in keys:
keys.append(key)
result[key][item['_id']] = fireEvent('library.tree', item, single = True)
for key in keys:
result[key] = result[key].values()
return result