def getDocuments(cls, database, category=None, type=None): helper = DocumentHelper(SyncDocument, database) if type: assert category for key, doc in helper.by_type(key=[category, type]): yield doc else: if category: start = [category] else: start = [] end = start + [{}] dirpath = "/" + "/".join(start) for key, doc in helper.by_type(startkey=start, endkey=end, group_level=len(start) + 1, reduce=True): yield cls( filename=key[len(start)], dirpath=dirpath, mode=0555 | stat.S_IFDIR, type="application/x-directory" )