Beispiel #1
0
def upload_folder(node: TreeNode,
                  parent_folder_id: str = "LOCAL_ROOT") -> None:
    """Il nodo rappresenta la cartella che non esiste nel server"""
    parent_folder_id = create_folder(node.get_name(), parent_folder_id)

    for _node in node.get_children():
        if _node.is_directory():
            upload_folder(_node, parent_folder_id)
        else:
            upload_file(_node, parent_folder_id)
Beispiel #2
0
def check_node_in_nodelist(tree: TreeNode, file_node_list: list) -> bool:
    # Per velocizzarlo di più forse è meglio ordinare i children mettendo prima i files
    for node in tree.get_children():
        if node.is_directory():
            # Se la cartella analizzata ha un nodo positivo,
            # ritorna True altrimenti guardiamo gli altri nodi
            if check_node_in_nodelist(node, file_node_list):
                return True
        else:
            if node.get_payload().id in file_node_list:
                return True
    return False
Beispiel #3
0
def download_folder(node: TreeNode, path: str) -> list[dict]:
    """Il nodo rappresenta la cartella che non esiste,
    ritorna i risultati dei download che sono stati fatti"""

    # Controlliamo se la cartella ha dei nodi da scaricare
    file_node_list = settings_model.get_sync_list()
    res = check_node_in_nodelist(node, file_node_list)

    download_operations_list = []

    if res:
        path_folder = os.path.join(path, node.get_name())
        os.mkdir(path_folder)

        for _node in node.get_children():
            if _node.is_directory():
                result = download_folder(_node, path_folder)
                download_operations_list.extend(result)
            else:
                result = download_file(_node, path_folder)
                if result is not None:
                    download_operations_list.append(result)

    return download_operations_list
class TestTreeNode(unittest.TestCase):
    def setUp(self):
        """Metodo che viene chiamato prima di ogni metodo"""
        self.files: list[Node] = [
            Node("CLIENT_NODE", "Test", Type.File, 1000, 1022,
                 "root/file.txt"),
            Node("CLIENT_NODE", "Test2", Type.File, 1000, 1024,
                 "root/file2.txt"),
            Node("CLIENT_NODE", "Test3", Type.File, 1000, 1026,
                 "root/root2/file3.txt"),
        ]
        self.folders: list[Node] = [
            Node("CLIENT_NODE", "Test Folder", Type.Folder, 1000, 1022,
                 "root"),
            Node("CLIENT_NODE", "Test Folder2", Type.Folder, 1000, 1025,
                 "root/root2"),
        ]

        self.tree_node = TreeNode(self.folders[0])
        self.tree_node.add_node(TreeNode(self.files[0]))
        self.tree_node.add_node(TreeNode(self.files[1]))
        self.tree_node_sub = TreeNode(self.folders[1])
        self.tree_node_sub.add_node(TreeNode(self.files[2]))
        self.tree_node.add_node(self.tree_node_sub)

    def test_is_directory(self) -> None:
        self.assertTrue(self.tree_node.is_directory())
        self.assertFalse(self.tree_node._children[0].is_directory())
        self.assertFalse(self.tree_node._children[1].is_directory())
        self.assertTrue(self.tree_node._children[2].is_directory())
        self.assertFalse(
            self.tree_node._children[2]._children[0].is_directory())

    def test_get_name(self) -> None:
        tests = {
            "Test Folder": self.tree_node.get_name(),
            "Test": self.tree_node._children[0].get_name(),
            "Test2": self.tree_node._children[1].get_name(),
            "Test Folder2": self.tree_node._children[2].get_name(),
            "Test3": self.tree_node._children[2]._children[0].get_name()
        }
        for expected, values in tests.items():
            self.assertEqual(expected, values)

    def test_get_updated_at(self) -> None:
        self.assertEqual(1022, self.tree_node.get_updated_at())
        self.assertEqual(1022, self.tree_node._children[0].get_updated_at())
        self.assertEqual(1024, self.tree_node._children[1].get_updated_at())
        self.assertEqual(1025, self.tree_node._children[2].get_updated_at())
        self.assertEqual(
            1026, self.tree_node._children[2]._children[0].get_updated_at())

    def test_get_children(self) -> None:
        self.assertEqual(self.folders[0], self.tree_node.get_payload())
        self.assertEqual(self.files[0],
                         self.tree_node._children[0].get_payload())
        self.assertEqual(self.files[1],
                         self.tree_node._children[1].get_payload())
        self.assertEqual(self.folders[1],
                         self.tree_node._children[2].get_payload())
        self.assertEqual(
            self.files[2],
            self.tree_node._children[2]._children[0].get_payload())

    def test_get_payload(self) -> None:
        self.assertEqual(3, len(self.tree_node.get_children()))
        self.assertEqual(
            self.files[2],
            self.tree_node._children[2]._children[0].get_payload())

    def test_parent(self) -> None:
        self.assertEqual(self.tree_node, self.tree_node._children[0]._parent)
        self.assertEqual(self.tree_node, self.tree_node._children[1]._parent)
        self.assertEqual(self.tree_node, self.tree_node._children[2]._parent)
        self.assertEqual(self.tree_node._children[2],
                         self.tree_node._children[2]._children[0]._parent)

    def test_add_node_exception(self) -> None:
        root = TreeNode(self.files[0])
        with self.assertRaises(ValueError):
            root.add_node(TreeNode(self.files[1]))

    def test_str(self) -> None:
        res = ("Test Folder - Folder (1022 -> 01/01/1970 00:17:02)\n"
               " Test (1022 -> 01/01/1970 00:17:02)\n"
               " Test2 (1024 -> 01/01/1970 00:17:04)\n"
               " Test Folder2 - Folder (1025 -> 01/01/1970 00:17:05)\n"
               "  Test3 (1026 -> 01/01/1970 00:17:06)\n")
        self.assertEqual(res, str(self.tree_node))
Beispiel #5
0
 def _search_through_children(self, name: str,
                              node: TreeNode) -> Optional[TreeNode]:
     for i in node.get_children():
         if i.get_name() == name:
             return i
     return None