def getDocuments(cls, database, buddy=None, *path): helper = DocumentHelper(cls, database) if len(path) > 0: login = get_user_infos(uid=int(buddy))["login"] for doc in helper.by_dir(key="/" + "/".join([login] + list(path))): yield doc elif buddy: uid = utils.get_user_infos(login=database.name)["uid"] provider = int(buddy) shared_dirs = {} startkey = [provider, uid] endkey = [provider + 1, uid] for key, doc in helper.by_provider_and_participant(startkey=startkey, endkey=endkey): if doc.type == "application/x-directory": shared_dirs[doc.path] = doc else: if doc.dirpath in shared_dirs: continue yield doc else: uid = utils.get_user_infos(login=database.name)["uid"] for key, doc in helper.by_provider_and_participant(group_level=1, reduce=True): if key[0] != uid: # Retrieve provider infos from gss api infos = utils.get_user_infos(uid=key[0]) yield cls( filename=infos["login"], dirpath=os.sep, mode=0555 | stat.S_IFDIR, uid=infos["uid"], gid=infos["gid"], type="application/x-directory", )