diff --git a/setup.py b/setup.py index 34660a7fe8964e28889e295c3d001a7e63102627..66881626659e5e3f16607123bc992eab57a1c640 100644 --- a/setup.py +++ b/setup.py @@ -11,11 +11,14 @@ from PyQt5 import QtCore # preparation des options sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib'))) sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'src'))) +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'certs'))) print(sys.path) -includes = ["sip", "re", "json", "logging", "hashlib", "os", "urllib", "ucoinpy", "pylibscrypt", "requests"] +includes = ["sip", "re", "json", "logging", + "hashlib", "os", "urllib", + "ucoinpy", "pylibscrypt", "requests"] excludes = [] -packages = ["libnacl"] +packages = ["libnacl", "encodings"] includefiles = [] if sys.platform == "win32": @@ -27,13 +30,13 @@ if sys.platform == "win32": includefiles.append(libEGL_path) includefiles.append(qt5svg_path) includefiles.append("platforms/win32/libsodium.dll") - + elif sys.platform == "darwin": pass else: pass - -includefiles.append(os.path.join("res", "certs", "DigiCertHighAssuranceEVRootCA.crt")) + +includefiles.append((os.path.join(os.path.dirname(__file__), 'res', 'certs', "DigiCertHighAssuranceEVRootCA.crt"), "DigiCertHighAssuranceEVRootCA.crt")) options = {"path": sys.path, "includes": includes, diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py index 1f2a30d18a58e6ce956672052b8f4251e335573c..c3c45bce0cdca352cb534f720818d5e76935c335 100644 --- a/src/cutecoin/core/app.py +++ b/src/cutecoin/core/app.py @@ -9,10 +9,11 @@ import logging import json import tarfile import shutil -import requests +import json import datetime -from PyQt5.QtCore import QObject, pyqtSignal +from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, QUrl +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest from . import config from .account import Account @@ -31,6 +32,7 @@ class Application(QObject): ''' loading_progressed = pyqtSignal(int, int) + version_requested = pyqtSignal() def __init__(self, argv): ''' @@ -43,7 +45,11 @@ class Application(QObject): self.default_account = "" self.current_account = None self.monitor = None + self.available_version = __version__ config.parse_arguments(argv) + self._network_manager = QNetworkAccessManager() + self._network_manager.finished.connect(self.read_available_version) + self.get_last_version() self.load() def get_account(self, name): @@ -328,12 +334,17 @@ class Application(QObject): 'local_accounts': self.jsonify_accounts()} return data - def latest_version(self): - version = (True, __version__) - logging.debug(os.environ["REQUESTS_CA_BUNDLE"]) - releases = requests.get("https://api.github.com/repos/ucoin-io/cutecoin/releases") + def get_last_version(self): + url = QUrl("https://api.github.com/repos/ucoin-io/cutecoin/releases") + request = QNetworkRequest(url) + self._network_manager.get(request) + + @pyqtSlot(QNetworkReply) + def read_available_version(self, reply): latest = None - for r in releases.json(): + releases = reply.readAll().data().decode('utf-8') + logging.debug(releases) + for r in json.loads(releases): if not latest: latest = r else: @@ -346,4 +357,6 @@ class Application(QObject): latest_version, latest["html_url"]) logging.debug("Found version : {0}".format(latest_version)) - return version + if version != self.available_version: + self.available_version = version + self.version_requested.emit() \ No newline at end of file diff --git a/src/cutecoin/gui/homescreen.py b/src/cutecoin/gui/homescreen.py index bd0f02d9eece537fd08fe1e9a78a51c5152c502f..1613d58876dfb1060ec186128d5b296dc31912d3 100644 --- a/src/cutecoin/gui/homescreen.py +++ b/src/cutecoin/gui/homescreen.py @@ -20,8 +20,12 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): """ super().__init__() self.setupUi(self) + self.app = app + self.refresh_text() + self.app.version_requested.connect(self.refresh_text) - latest = app.latest_version() + def refresh_text(self): + latest = self.app.available_version version_info = "" version_url = "" if not latest[0]: diff --git a/src/cutecoin/main.py b/src/cutecoin/main.py index c84d83f77c031468cd9e8e9f2e64dc81ae0af84b..d92b85ca2d26863bb85399373fc89c685e5916c0 100755 --- a/src/cutecoin/main.py +++ b/src/cutecoin/main.py @@ -12,7 +12,6 @@ from PyQt5.QtCore import QLocale from cutecoin.gui.mainwindow import MainWindow from cutecoin.core.app import Application - if __name__ == '__main__': #Â activate ctrl-c interrupt signal.signal(signal.SIGINT, signal.SIG_DFL) @@ -25,9 +24,8 @@ if __name__ == '__main__': # Change this bit to match where you store your data files: datadir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(datadir, - "res", "certs", + "res", "certs", "DigiCertHighAssuranceEVRootCA.crt") - cutecoin = QApplication(sys.argv) app = Application(sys.argv)