示例#1
0
    def rename(self, new_name):
        """
        Renames this item.

        If the project item needs any additional steps in renaming, override this
        method in subclass. See e.g. rename() method in DataStore class.

        Args:
            new_name(str): New name

        Returns:
            bool: True if renaming succeeded, False otherwise
        """
        old_name = self.name
        new_short_name = shorten(new_name)
        # Rename project item data directory
        new_data_dir = os.path.join(self._project.items_dir, new_short_name)
        if not rename_dir(self.data_dir, new_data_dir, self._logger):
            return False
        # Rename project item
        self.set_name(new_name)
        # Update project item directory variable
        self.data_dir = new_data_dir
        # Update name label in tab
        if self._active:
            self.update_name_label()
        # Update name item of the QGraphicsItem
        self.get_icon().update_name_item(new_name)
        self._project.dag_handler.rename_node(old_name, new_name)
        return True
示例#2
0
 def test_rename_dir_fails_if_target_exists(self):
     with TemporaryDirectory() as temp_dir:
         old_dir = Path(temp_dir, "old directory")
         old_dir.mkdir()
         new_dir = Path(temp_dir, "new directory")
         new_dir.mkdir()
         logger = MagicMock()
         self.assertFalse(rename_dir(str(old_dir), str(new_dir), logger))
         logger.information_box.emit.assert_called_once()
         self.assertTrue(old_dir.exists())
         self.assertTrue(new_dir.exists())
示例#3
0
 def test_rename_dir(self):
     with TemporaryDirectory() as temp_dir:
         old_dir = Path(temp_dir, "old directory")
         old_dir.mkdir()
         file_in_dir = Path(old_dir, "file.fff")
         file_in_dir.touch()
         new_dir = Path(temp_dir, "new directory")
         logger = MagicMock()
         self.assertTrue(rename_dir(str(old_dir), str(new_dir), logger))
         self.assertFalse(old_dir.exists())
         self.assertTrue(new_dir.exists())
         files_in_new_dir = [path for path in new_dir.iterdir()]
         self.assertEqual(files_in_new_dir, [Path(new_dir, "file.fff")])
示例#4
0
 def test_rename_dir_prompts_user_if_target_exists(self):
     with TemporaryDirectory() as temp_dir:
         old_dir = Path(temp_dir, "old directory")
         old_dir.mkdir()
         new_dir = Path(temp_dir, "new directory")
         new_dir.mkdir()
         logger = MagicMock()
         with unittest.mock.patch(
                 "spinetoolbox.helpers.QMessageBox") as mock_msg_box:
             self.assertFalse(
                 rename_dir(str(old_dir), str(new_dir), logger,
                            "box_title"))
             mock_msg_box.assert_called_once()
         self.assertTrue(old_dir.exists())
         self.assertTrue(new_dir.exists())