Added "library.tree" event/api call
This commit is contained in:
Regular → Executable
+41
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user