Fix issue where file deleted flag wouldn't be reset
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -156,3 +156,4 @@ benchmark/output
|
|||||||
# src/primaite/notebooks/scratch.ipynb
|
# src/primaite/notebooks/scratch.ipynb
|
||||||
src/primaite/notebooks/scratch.py
|
src/primaite/notebooks/scratch.py
|
||||||
sandbox.py
|
sandbox.py
|
||||||
|
sandbox/
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ class FileSystem(SimComponent):
|
|||||||
"List containing all the folders in the file system."
|
"List containing all the folders in the file system."
|
||||||
deleted_folders: Dict[str, Folder] = {}
|
deleted_folders: Dict[str, Folder] = {}
|
||||||
"List containing all the folders that have been deleted."
|
"List containing all the folders that have been deleted."
|
||||||
_folders_by_name: Dict[str, Folder] = {}
|
|
||||||
sys_log: SysLog
|
sys_log: SysLog
|
||||||
"Instance of SysLog used to create system logs."
|
"Instance of SysLog used to create system logs."
|
||||||
sim_root: Path
|
sim_root: Path
|
||||||
@@ -56,7 +55,6 @@ class FileSystem(SimComponent):
|
|||||||
folder = self.deleted_folders[uuid]
|
folder = self.deleted_folders[uuid]
|
||||||
self.deleted_folders.pop(uuid)
|
self.deleted_folders.pop(uuid)
|
||||||
self.folders[uuid] = folder
|
self.folders[uuid] = folder
|
||||||
self._folders_by_name[folder.name] = folder
|
|
||||||
|
|
||||||
# Clear any other deleted folders that aren't original (have been created by agent)
|
# Clear any other deleted folders that aren't original (have been created by agent)
|
||||||
self.deleted_folders.clear()
|
self.deleted_folders.clear()
|
||||||
@@ -67,7 +65,6 @@ class FileSystem(SimComponent):
|
|||||||
if uuid not in original_folder_uuids:
|
if uuid not in original_folder_uuids:
|
||||||
folder = self.folders[uuid]
|
folder = self.folders[uuid]
|
||||||
self.folders.pop(uuid)
|
self.folders.pop(uuid)
|
||||||
self._folders_by_name.pop(folder.name)
|
|
||||||
|
|
||||||
# Now reset all remaining folders
|
# Now reset all remaining folders
|
||||||
for folder in self.folders.values():
|
for folder in self.folders.values():
|
||||||
@@ -173,7 +170,6 @@ class FileSystem(SimComponent):
|
|||||||
folder = Folder(name=folder_name, sys_log=self.sys_log)
|
folder = Folder(name=folder_name, sys_log=self.sys_log)
|
||||||
|
|
||||||
self.folders[folder.uuid] = folder
|
self.folders[folder.uuid] = folder
|
||||||
self._folders_by_name[folder.name] = folder
|
|
||||||
self._folder_request_manager.add_request(
|
self._folder_request_manager.add_request(
|
||||||
name=folder.uuid, request_type=RequestType(func=folder._request_manager)
|
name=folder.uuid, request_type=RequestType(func=folder._request_manager)
|
||||||
)
|
)
|
||||||
@@ -188,14 +184,13 @@ class FileSystem(SimComponent):
|
|||||||
if folder_name == "root":
|
if folder_name == "root":
|
||||||
self.sys_log.warning("Cannot delete the root folder.")
|
self.sys_log.warning("Cannot delete the root folder.")
|
||||||
return
|
return
|
||||||
folder = self._folders_by_name.get(folder_name)
|
folder = self.get_folder(folder_name)
|
||||||
if folder:
|
if folder:
|
||||||
# set folder to deleted state
|
# set folder to deleted state
|
||||||
folder.delete()
|
folder.delete()
|
||||||
|
|
||||||
# remove from folder list
|
# remove from folder list
|
||||||
self.folders.pop(folder.uuid)
|
self.folders.pop(folder.uuid)
|
||||||
self._folders_by_name.pop(folder.name)
|
|
||||||
|
|
||||||
# add to deleted list
|
# add to deleted list
|
||||||
folder.remove_all_files()
|
folder.remove_all_files()
|
||||||
@@ -221,7 +216,10 @@ class FileSystem(SimComponent):
|
|||||||
:param folder_name: The folder name.
|
:param folder_name: The folder name.
|
||||||
:return: The matching Folder.
|
:return: The matching Folder.
|
||||||
"""
|
"""
|
||||||
return self._folders_by_name.get(folder_name)
|
for folder in self.folders.values():
|
||||||
|
if folder.name == folder_name:
|
||||||
|
return folder
|
||||||
|
return None
|
||||||
|
|
||||||
def get_folder_by_id(self, folder_uuid: str, include_deleted: bool = False) -> Optional[Folder]:
|
def get_folder_by_id(self, folder_uuid: str, include_deleted: bool = False) -> Optional[Folder]:
|
||||||
"""
|
"""
|
||||||
@@ -261,13 +259,13 @@ class FileSystem(SimComponent):
|
|||||||
"""
|
"""
|
||||||
if folder_name:
|
if folder_name:
|
||||||
# check if file with name already exists
|
# check if file with name already exists
|
||||||
folder = self._folders_by_name.get(folder_name)
|
folder = self.get_folder(folder_name)
|
||||||
# If not then create it
|
# If not then create it
|
||||||
if not folder:
|
if not folder:
|
||||||
folder = self.create_folder(folder_name)
|
folder = self.create_folder(folder_name)
|
||||||
else:
|
else:
|
||||||
# Use root folder if folder_name not supplied
|
# Use root folder if folder_name not supplied
|
||||||
folder = self._folders_by_name["root"]
|
folder = self.get_folder("root")
|
||||||
|
|
||||||
# Create the file and add it to the folder
|
# Create the file and add it to the folder
|
||||||
file = File(
|
file = File(
|
||||||
@@ -474,7 +472,6 @@ class FileSystem(SimComponent):
|
|||||||
|
|
||||||
folder.restore()
|
folder.restore()
|
||||||
self.folders[folder.uuid] = folder
|
self.folders[folder.uuid] = folder
|
||||||
self._folders_by_name[folder.name] = folder
|
|
||||||
|
|
||||||
if folder.deleted:
|
if folder.deleted:
|
||||||
self.deleted_folders.pop(folder.uuid)
|
self.deleted_folders.pop(folder.uuid)
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class FileSystemItemABC(SimComponent):
|
|||||||
|
|
||||||
def set_original_state(self):
|
def set_original_state(self):
|
||||||
"""Sets the original state."""
|
"""Sets the original state."""
|
||||||
vals_to_keep = {"name", "health_status", "visible_health_status", "previous_hash", "revealed_to_red"}
|
vals_to_keep = {"name", "health_status", "visible_health_status", "previous_hash", "revealed_to_red", "deleted"}
|
||||||
self._original_state = self.model_dump(include=vals_to_keep)
|
self._original_state = self.model_dump(include=vals_to_keep)
|
||||||
|
|
||||||
def describe_state(self) -> Dict:
|
def describe_state(self) -> Dict:
|
||||||
|
|||||||
Reference in New Issue
Block a user