From 1b1148d0c68cc719ee395c663aeb6a5f18e1a4bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Tue, 3 May 2016 12:23:39 +0200 Subject: [PATCH] Properly refresh analysis data on re-upload of a file --- src/octoprint/filemanager/__init__.py | 2 +- src/octoprint/filemanager/storage.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/octoprint/filemanager/__init__.py b/src/octoprint/filemanager/__init__.py index 2e2a1be0..1dfd4635 100644 --- a/src/octoprint/filemanager/__init__.py +++ b/src/octoprint/filemanager/__init__.py @@ -513,7 +513,7 @@ class FileManager(object): return storage_manager = self._storage_managers[destination] - storage_manager.set_additional_metadata(path, "analysis", result) + storage_manager.set_additional_metadata(path, "analysis", result, overwrite=True) def _on_analysis_finished(self, entry, result): self._add_analysis_result(entry.location, entry.path, result) diff --git a/src/octoprint/filemanager/storage.py b/src/octoprint/filemanager/storage.py index 20964e72..610040dc 100644 --- a/src/octoprint/filemanager/storage.py +++ b/src/octoprint/filemanager/storage.py @@ -577,8 +577,15 @@ class LocalFileStorage(StorageInterface): # save the file's hash to the metadata of the folder file_hash = self._create_hash(file_path) metadata = self._get_metadata_entry(path, name, default=dict()) + metadata_dirty = False if not "hash" in metadata or metadata["hash"] != file_hash: metadata["hash"] = file_hash + metadata_dirty = True + if "analysis" in metadata: + del metadata["analysis"] + metadata_dirty = True + + if metadata_dirty: self._update_metadata_entry(path, name, metadata) # process any links that were also provided for adding to the file @@ -680,9 +687,6 @@ class LocalFileStorage(StorageInterface): new_data = octoprint.util.dict_merge(current_data, data) metadata[name][key] = new_data metadata_dirty = True - elif key in metadata[name] and overwrite: - metadata[name][key] = data - metadata_dirty = True if metadata_dirty: self._save_metadata(path, metadata)