Exemplo n.º 1
0
    def testGetfilePathsList(self):
        tree = StoreTree(0)

        tree.add_folder(1, 'folder1')
        tree.add_folder(2, 'folder2')
        tree.add_folder(3, 'folder3')
        tree.add_folder(4, 'folder4', parent_id=1)
        tree.add_folder(5, 'folder5', parent_id=3)

        tree.add_file(6, 'file1.txt')
        tree.add_file(7, 'file2', parent_id=4)
        tree.add_file(8, 'file3.png')

        file_paths = tree.get_file_paths_list()

        self.assertEqual(len(file_paths), 3)
        self.assertIn(StoreTree.concat_paths(['', 'file1.txt']), file_paths)
        self.assertIn(
            StoreTree.concat_paths(['', 'folder1', 'folder4', 'file2']),
            file_paths)
        self.assertIn(StoreTree.concat_paths(['', 'file3.png']), file_paths)
Exemplo n.º 2
0
    def create_folder_by_path(self, folder_path):
        """
        Creates a folder as specfified by parent_path.
        Folders in the path are checked for existence and created if they aren't
        already.

        :param folder_path: path to new folder from the server root.
        :return: the id of the created folder.
        """
        root_folder_tree = self._get_root_folder_tree()
        current_parent_id = root_folder_tree.find_item_by_path(
            '', is_path_to_file=False)['id']

        path_folders = StoreTree.get_path_levels(folder_path)

        if path_folders[0] == '':
            return current_parent_id

        current_path = ''
        for folder_name in path_folders:
            new_parent = root_folder_tree.find_item_by_path(
                StoreTree.concat_paths([current_path, folder_name]))
            if new_parent is None:
                # Need to make on the server
                new_parent_id = self.create_folder(current_parent_id,
                                                   folder_name)
                root_folder_tree.add_folder(new_parent_id,
                                            name=folder_name,
                                            parent_id=current_parent_id)
                current_parent_id = new_parent_id
            else:
                current_parent_id = new_parent['id']

            current_path = StoreTree.concat_paths([current_path, folder_name])

        return current_parent_id