Browse Source

Only use profile reader if extension matches with filename

CURA-2462
Jaime van Kessel 8 years ago
parent
commit
d4bb0d4a0b
1 changed files with 9 additions and 5 deletions
  1. 9 5
      cura/Settings/CuraContainerRegistry.py

+ 9 - 5
cura/Settings/CuraContainerRegistry.py

@@ -129,13 +129,17 @@ class CuraContainerRegistry(ContainerRegistry):
 
         plugin_registry = PluginRegistry.getInstance()
         container_registry = ContainerRegistry.getInstance()
+        extension = file_name.split(".")[-1]
         for plugin_id, meta_data in self._getIOPlugins("profile_reader"):
+            if meta_data["profile_reader"][0]["extension"] != extension:
+                continue
+
             profile_reader = plugin_registry.getPluginObject(plugin_id)
             try:
-                profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader.
+                profile_or_list = profile_reader.read(file_name)  # Try to open the file with the profile reader.
             except Exception as e:
-                #Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None.
-                Logger.log("e", "Failed to import profile from %s: %s", file_name, str(e))
+                # Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None.
+                Logger.log("e", "Failed to import profile from %s: %s while using profile reader", file_name, str(e), profile_reader.getPluginId())
                 return { "status": "error", "message": catalog.i18nc("@info:status", "Failed to import profile from <filename>{0}</filename>: <message>{1}</message>", file_name, str(e))}
             if profile_or_list: # Success!
                 name_seed = os.path.splitext(os.path.basename(file_name))[0]
@@ -157,8 +161,8 @@ class CuraContainerRegistry(ContainerRegistry):
 
                     return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())}
 
-        #If it hasn't returned by now, none of the plugins loaded the profile successfully.
-        return { "status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type.", file_name)}
+        # If it hasn't returned by now, none of the plugins loaded the profile successfully.
+        return {"status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type.", file_name)}
 
     def _configureProfile(self, profile, id_seed):
         profile.setReadOnly(False)