def test_find_path_for_file_id(self): """Test find_path_for_file_id""" file_ids = [] file_ids.append(FileId(hash='1', filename='../damn-test-files/mesh/blender/cube1.blend')) file_ids.append(FileId(hash='2', filename='../../image/jpg/crate10b.jpg')) file_ids.append(FileId(hash='3', filename='../../image/jpg/crate10.jpg')) main_dict = file_ids_as_tree(file_ids, '../damn-test-files/mesh/blender') prettify(main_dict) assert '_/_/cube1.blend' == find_path_for_file_id(main_dict, file_ids[0]) assert 'image/jpg/crate10b.jpg' == find_path_for_file_id(main_dict, file_ids[1]) assert 'image/jpg/crate10.jpg' == find_path_for_file_id(main_dict, file_ids[2])
def test_find_path_for_file_id(self): """Test find_path_for_file_id""" file_ids = [] file_ids.append(FileId(hash="1", filename="../damn-test-files/mesh/blender/cube1.blend")) file_ids.append(FileId(hash="2", filename="../../image/jpg/crate10b.jpg")) file_ids.append(FileId(hash="3", filename="../../image/jpg/crate10.jpg")) main_dict = file_ids_as_tree(file_ids, "../damn-test-files/mesh/blender") prettify(main_dict) assert "_/_/cube1.blend" == find_path_for_file_id(main_dict, file_ids[0]) assert "image/jpg/crate10b.jpg" == find_path_for_file_id(main_dict, file_ids[1]) assert "image/jpg/crate10.jpg" == find_path_for_file_id(main_dict, file_ids[2])
def getattr_mount(self, path, file_hash, action, rest): file_descr = get_file_descr(file_hash) if not rest: rest = '' file_ids = get_referenced_file_ids(file_descr) tree = file_ids_as_tree(file_ids, os.path.dirname(file_descr.file.filename)) if rest == os.path.basename(file_descr.file.filename): path_to = find_path_for_file_id(tree, file_descr.file) LOG.debug("Rest:\n\t%s\n\t%s" % (rest, path_to)) file_stat = self.getattr_mount_file(path, file_hash, action, rest, ('', file_descr.file), file_descr) if path_to.count('/') != 0: file_stat.st_mode = stat.S_IFLNK | 0o755 return file_stat files = get_files_for_path(tree, rest) if isinstance(files, dict): return MyStat(True, 0) else: return self.getattr_mount_file(path, file_hash, action, rest, files, file_descr)
def readlink(self, path): print('*** readlink', path) file_hash, action, rest = parse_path(path) file_descr = get_file_descr(file_hash) file_ids = get_referenced_file_ids(file_descr) tree = file_ids_as_tree(file_ids, os.path.dirname(file_descr.file.filename)) path_to = find_path_for_file_id(tree, file_descr.file) return path_to
def readlink(self, path): LOG.debug("*** readlink: %s", path) file_hash, action, rest = parse_path(path) file_descr = get_file_descr(file_hash) file_ids = get_referenced_file_ids(file_descr) tree = file_ids_as_tree(file_ids, os.path.dirname(file_descr.file.filename)) path_to = find_path_for_file_id(tree, file_descr.file) return path_to
def getattr_mount(self, path, file_hash, action, rest): file_descr = get_file_descr(file_hash) if not rest: rest = '' file_ids = get_referenced_file_ids(file_descr) tree = file_ids_as_tree( file_ids, os.path.dirname(file_descr.file.filename) ) if rest == os.path.basename(file_descr.file.filename): path_to = find_path_for_file_id(tree, file_descr.file) LOG.debug("Rest:\n\t%s\n\t%s" % (rest, path_to)) file_stat = self.getattr_mount_file( path, file_hash, action, rest, ('', file_descr.file), file_descr ) if path_to.count('/') != 0: file_stat.st_mode = stat.S_IFLNK | 0755 return file_stat files = get_files_for_path(tree, rest) if isinstance(files, dict): return MyStat(True, 0) else: return self.getattr_mount_file( path, file_hash, action, rest, files, file_descr )