diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index ca4f866598..308a91bc76 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -283,6 +283,13 @@ class CuraContainerStack(ContainerStack): self._containers = new_containers + # CURA-5281 + # Some stacks can have empty definition_changes containers which will cause problems. + # Make sure that all stacks here have non-empty definition_changes containers. + if isinstance(new_containers[_ContainerIndexes.DefinitionChanges], type(self._empty_instance_container)): + from cura.Settings.CuraStackBuilder import CuraStackBuilder + CuraStackBuilder.createDefinitionChangesContainer(self, self.getId() + "_settings") + ## protected: # Helper to make sure we emit a PyQt signal on container changes. diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 1d6d339e29..14f4f5fc33 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -302,13 +302,6 @@ class MachineManager(QObject): ## Given a global_stack, make sure that it's all valid by searching for this quality group and applying it again def _initMachineState(self, global_stack): - # Some stacks can have empty definition_changes containers which will cause problems. - # Make sure that all stacks here have non-empty definition_changes containers. - for stack in [global_stack] + list(global_stack.extruders.values()): - if isinstance(stack.definitionChanges, type(self._empty_container)): - from cura.Settings.CuraStackBuilder import CuraStackBuilder - CuraStackBuilder.createDefinitionChangesContainer(stack, stack.getId() + "_settings") - material_dict = {} for position, extruder in global_stack.extruders.items(): material_dict[position] = extruder.material.getMetaDataEntry("base_file") diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index 8c91d5a4be..bf18aa7a86 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -309,8 +309,12 @@ class PluginBrowser(QObject, Extension): try: plugin_object = self._plugin_registry.getPluginObject(plugin_id) except PluginNotFoundError: + # CURA-5287 + # At this point, we know that this plugin is installed because it passed the previous check, but we cannot + # get the PluginObject. This means there is a bug in the plugin or something. So, we always allow to upgrade + # this plugin and hopefully that fixes it. Logger.log("w", "Could not find plugin %s", plugin_id) - return False + return True # Scan plugin server data for plugin with the given id: for plugin in self._plugins_metadata: