Added "library.tree" event/api call
This commit is contained in:
Regular → Executable
+41
@@ -11,10 +11,13 @@ class Library(LibraryBase):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
addEvent('library.title', self.title)
|
addEvent('library.title', self.title)
|
||||||
addEvent('library.related', self.related)
|
addEvent('library.related', self.related)
|
||||||
|
addEvent('library.tree', self.tree)
|
||||||
|
|
||||||
addEvent('library.root', self.root)
|
addEvent('library.root', self.root)
|
||||||
|
|
||||||
addApiView('library.query', self.queryView)
|
addApiView('library.query', self.queryView)
|
||||||
addApiView('library.related', self.relatedView)
|
addApiView('library.related', self.relatedView)
|
||||||
|
addApiView('library.tree', self.treeView)
|
||||||
|
|
||||||
def queryView(self, media_id, **kwargs):
|
def queryView(self, media_id, **kwargs):
|
||||||
db = get_db()
|
db = get_db()
|
||||||
@@ -32,6 +35,14 @@ class Library(LibraryBase):
|
|||||||
'result': fireEvent('library.related', media, single = True)
|
'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):
|
def title(self, library):
|
||||||
return fireEvent(
|
return fireEvent(
|
||||||
'library.query',
|
'library.query',
|
||||||
@@ -64,3 +75,33 @@ class Library(LibraryBase):
|
|||||||
cur = db.get('id', cur['parent_id'])
|
cur = db.get('id', cur['parent_id'])
|
||||||
|
|
||||||
return cur
|
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