Browse Source

Added "library.tree" event/api call

pull/3730/merge
Dean Gardiner 11 years ago
parent
commit
2d5a3e7564
  1. 41
      couchpotato/core/media/_base/library/main.py

41
couchpotato/core/media/_base/library/main.py

@ -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

Loading…
Cancel
Save