From 95c6258d0f27ca0f0e5f9a787406376b62e42794 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 9 Apr 2018 15:10:23 +0200 Subject: [PATCH] Handle plugin not found due to mixed plugin metadata CURA-5202 Plugin metadata that comes from the plugin server is also saved into PluginRegistry's metadata collection, so it's all mixed. Plugins that are just installed cannot be loaded immediately, and this causes an error in checkCanUpgrade(). --- plugins/PluginBrowser/PluginBrowser.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index 518528f776..f85c2cb85f 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -6,6 +6,7 @@ from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkRepl from UM.Application import Application from UM.Logger import Logger +from UM.PluginError import PluginNotFoundError from UM.PluginRegistry import PluginRegistry from UM.Qt.Bindings.PluginsModel import PluginsModel from UM.Extension import Extension @@ -302,10 +303,15 @@ class PluginBrowser(QObject, Extension): return self._plugins_model def _checkCanUpgrade(self, plugin_id, version): - if plugin_id not in self._plugin_registry.getInstalledPlugins(): + if not self._plugin_registry.isInstalledPlugin(plugin_id): + return False + + try: + plugin_object = self._plugin_registry.getPluginObject(plugin_id) + except PluginNotFoundError: + Logger.log("w", "Could not find plugin %s", plugin_id) return False - plugin_object = self._plugin_registry.getPluginObject(plugin_id) # Scan plugin server data for plugin with the given id: for plugin in self._plugins_metadata: if plugin_id == plugin["id"]: