Browse Source

Let 3mf workspace reader read from files per plugin

CURA-6627
Jaime van Kessel 5 years ago
parent
commit
712cebcdd2
1 changed files with 13 additions and 5 deletions
  1. 13 5
      plugins/3MFReader/ThreeMFWorkspaceReader.py

+ 13 - 5
plugins/3MFReader/ThreeMFWorkspaceReader.py

@@ -737,12 +737,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
 
     def _loadMetadata(self, file_name) -> Dict[str, Dict[str, Any]]:
         archive = zipfile.ZipFile(file_name, "r")
+
+        metadata_files = [name for name in archive.namelist() if name.endswith("plugin_metadata.json")]
         import json
-        try:
-            return json.loads(archive.open("Cura/plugin_metadata.json").read().decode("utf-8"))
-        except KeyError:
-            # The plugin_metadata.json file doesn't exist
-            return dict()
+
+        result = dict()
+
+        for metadata_file in metadata_files:
+            try:
+                plugin_id = metadata_file.split("/")[0]
+                result[plugin_id] = json.loads(archive.open("Cura/plugin_metadata.json").read().decode("utf-8"))
+            except Exception:
+                Logger.logException("w", "Unable to retrieve metadata for %s", metadata_file)
+
+        return result
 
     def _processQualityChanges(self, global_stack):
         if self._machine_info.quality_changes_info is None: