From e6a3577e9d9f8cc13211f861ce67cf5f651f215d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 23 Jun 2017 11:25:53 +0200 Subject: [PATCH] Plugin browser now also uses version to check if plugin is already installed CURA-3856 --- plugins/PluginBrowser/PluginBrowser.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index a68ce75d8d..cdee651e71 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -6,6 +6,7 @@ from UM.Logger import Logger from UM.Qt.ListModel import ListModel from UM.PluginRegistry import PluginRegistry from UM.Application import Application +from UM.Version import Version from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest from PyQt5.QtCore import QUrl, QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot @@ -100,19 +101,29 @@ class PluginBrowser(QObject, Extension): else: self._plugins_model.clear() items = [] - plugin_registry = PluginRegistry.getInstance() for metadata in self._plugins_metadata: items.append({ "name": metadata["label"], "version": metadata["version"], "short_description": metadata["short_description"], "author": metadata["author"], - "already_installed": plugin_registry.getMetaData(metadata["id"]) != {}, + "already_installed": self._checkAlreadyInstalled(metadata["id"], metadata["version"]), "file_location": metadata["file_location"] }) self._plugins_model.setItems(items) return self._plugins_model + def _checkAlreadyInstalled(self, id, version): + plugin_registry = PluginRegistry.getInstance() + metadata = plugin_registry.getMetaData(id) + if metadata != {}: + current_version = Version(metadata["plugin"]["version"]) + new_version = Version(version) + if new_version > current_version: + return False + return True + + def _onRequestFinished(self, reply): reply_url = reply.url().toString() if reply.operation() == QNetworkAccessManager.GetOperation: