From f39a5c63d6b162991670ae311f4916cc250df64f Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Sat, 19 Mar 2016 13:01:07 +0100 Subject: [PATCH] Handle errors when connecting to first node --- src/sakia/core/txhistory.py | 13 ++++++++++--- src/sakia/gui/process_cfg_community.py | 15 +++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/sakia/core/txhistory.py b/src/sakia/core/txhistory.py index 691202b9..aa862d48 100644 --- a/src/sakia/core/txhistory.py +++ b/src/sakia/core/txhistory.py @@ -61,9 +61,16 @@ class TxHistory(): data_sources.append(s) data_dividends = [] - for d in self._dividends.copy(): - d['state'] = d['state'].name - data_dividends.append(d) + for d in self._dividends: + dividend = { + 'block_number': d['block_number'], + "consumed": d['consumed'], + 'time': d['time'], + 'amount': d['amount'], + 'base': d['base'], + 'state': d['state'].name + } + data_dividends.append(dividend) return {'latest_block': self.latest_block, 'transfers': data_transfer, diff --git a/src/sakia/gui/process_cfg_community.py b/src/sakia/gui/process_cfg_community.py index 2402631f..d7b0b441 100644 --- a/src/sakia/gui/process_cfg_community.py +++ b/src/sakia/gui/process_cfg_community.py @@ -8,6 +8,7 @@ import logging import asyncio import aiohttp +from ucoinpy.api.bma import UcoinError from ucoinpy.documents import MalformedDocumentError from PyQt5.QtWidgets import QDialog, QMenu, QApplication from PyQt5.QtGui import QCursor @@ -20,6 +21,7 @@ from ..core.net import Node from .widgets import toast from .widgets.dialogs import QAsyncMessageBox from ..tools.decorators import asyncify +from ..tools.exceptions import NoPeerAvailable class Step(QObject): @@ -111,7 +113,8 @@ Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) port = self.config_dialog.spinbox_port.value() logging.debug("Is valid ? ") try: - self.node = await Node.from_address(None, server, port, session=aiohttp.ClientSession()) + session = aiohttp.ClientSession() + self.node = await Node.from_address(None, server, port, session=session) community = Community.create(self.node) self.config_dialog.button_connect.setEnabled(False) self.config_dialog.button_register.setEnabled(False) @@ -141,12 +144,12 @@ Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) else: self.config_dialog.label_error.setText(self.tr("Your account already exists on the network")) - except aiohttp.errors.DisconnectedError as e: - self.config_dialog.label_error.setText(str(e)) - except aiohttp.errors.ClientError as e: + except (MalformedDocumentError, ValueError, UcoinError, + aiohttp.errors.ClientError, aiohttp.errors.DisconnectedError) as e: + session.close() self.config_dialog.label_error.setText(str(e)) - #except (MalformedDocumentError, ValueError) as e: - # self.config_dialog.label_error.setText(str(e)) + except NoPeerAvailable: + self.config_dialog.label_error.setText(self.tr("Could not connect. Check node peering entry")) def is_valid(self): return self.node is not None -- GitLab