From cf241366dc413318739b5e12198ea750765c0e3b Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Wed, 9 Aug 2023 15:15:45 +0100 Subject: [PATCH] #1714: apply suggestions for preventing addition of objects with similar uuid --- src/primaite/simulator/file_system/file_system.py | 8 +++++++- src/primaite/simulator/file_system/file_system_folder.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/primaite/simulator/file_system/file_system.py b/src/primaite/simulator/file_system/file_system.py index 3290570e..6cdcaca2 100644 --- a/src/primaite/simulator/file_system/file_system.py +++ b/src/primaite/simulator/file_system/file_system.py @@ -95,7 +95,13 @@ class FileSystem(SimComponent): :type: folder_name: str """ folder = FileSystemFolder(name=folder_name) - self.folders[folder.uuid] = folder + + if folder.uuid in self.folders: + # iterate until a folder with a non-matching uuid is added + # which is VERY unlikely but it'll be weird if it happens twice + return self.create_folder(folder_name=folder_name) + else: + self.folders[folder.uuid] = folder return folder def delete_file(self, file: Optional[FileSystemFile] = None): diff --git a/src/primaite/simulator/file_system/file_system_folder.py b/src/primaite/simulator/file_system/file_system_folder.py index 23f4ca79..62f98029 100644 --- a/src/primaite/simulator/file_system/file_system_folder.py +++ b/src/primaite/simulator/file_system/file_system_folder.py @@ -26,7 +26,7 @@ class FileSystemFolder(FileSystemItem): raise Exception(f"Invalid file: {file}") # check if file with id already exists in folder - if self.get_file_by_id(file.uuid) is not None: + if file.uuid in self.files: _LOGGER.debug(f"File with id {file.uuid} already exists in folder") else: # add to list