From 9e57db0611cfe2f7a6562613762609ee16b310c5 Mon Sep 17 00:00:00 2001 From: Eric Callahan Date: Tue, 1 Feb 2022 11:30:05 -0500 Subject: [PATCH] file_manager: add method to retreive the metadata storage object This allows other components to synchronously access and update metadata if necessary. Signed-off-by: Eric Callahan --- moonraker/components/file_manager/file_manager.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/moonraker/components/file_manager/file_manager.py b/moonraker/components/file_manager/file_manager.py index 175dfff..4f9db2f 100644 --- a/moonraker/components/file_manager/file_manager.py +++ b/moonraker/components/file_manager/file_manager.py @@ -12,6 +12,7 @@ import logging import json import tempfile import asyncio +from copy import deepcopy from inotify_simple import INotify from inotify_simple import flags as iFlags @@ -198,6 +199,9 @@ class FileManager: return "" return os.path.relpath(full_path, start=root_dir) + def get_metadata_storage(self) -> MetadataStorage: + return self.gcode_metadata + def check_file_exists(self, root: str, filename: str) -> bool: root_dir = self.file_paths.get(root, "") file_path = os.path.join(root_dir, filename) @@ -1500,7 +1504,12 @@ class MetadataStorage: key: str, default: _T = None ) -> Union[_T, Dict[str, Any]]: - return self.metadata.get(key, default) + return deepcopy(self.metadata.get(key, default)) + + def insert(self, key: str, value: Dict[str, Any]) -> None: + val = deepcopy(value) + self.metadata[key] = val + self.mddb[key] = val def _has_valid_data(self, fname: str,