Esempio n. 1
0
    def to_external(self, path):
        """Возвращает первоначальный путь файла.

        Позиционные аргументы:
        path -- исходный путь

        Папка с корзином считается корнем.
        Протокол дешефруется из последовательности кодов символов.

        """
        trash_dir = utils.get_absolute_path(self.directory)
        full_path = utils.get_absolute_path(path)

        if os.path.commonprefix((full_path, trash_dir)) != trash_dir:
            error_fmt = "{path} is'n trash area({trash_dir})."
            error_msg = error_fmt.format(path=path, trash_dir=trash_dir)
            raise ValueError(error_msg)

        rel_path = os.path.relpath(full_path, trash_dir)
        splitted_path = utils.split_path(rel_path)[1:]

        protocol_code = splitted_path[0]
        protocol = ''.join(chr(int(s)) for s in protocol_code.split(' '))
        splitted_path[0] = protocol
        ext_path = os.path.join(*splitted_path)

        return ext_path
Esempio n. 2
0
    def to_internal(self, path):
        """Возвращает путь файла, переподвешанного к корзине.

        Позиционные аргументы:
        path -- исходный путь

        Определяется как путь к файлу, подвешанный к
        папке с корзиной.

        Протокол шифруется как последовательность кодов символов.

        """
        trash_dir = utils.get_absolute_path(self.directory)
        path_full = utils.get_absolute_path(path)

        splitted_path = utils.split_path(path_full)

        protocol = splitted_path[0]
        protocol_code = ' '.join([str(ord(char)) for char in protocol])
        splitted_path[0] = protocol_code

        int_path = os.path.join(trash_dir, *splitted_path)
        return int_path
Esempio n. 3
0
 def test_2(self):
     result = utils.split_path("./a/b.txt")
     ans = ["", ".", "a", "b.txt"]
     self.assertEqual(result, ans)