diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py index 3817763158b9d533e016a52fc533280c498b9233..65e639f77961d10c4f199c34b9464fa8da84d4d5 100644 --- a/src/sakia/data/connectors/bma.py +++ b/src/sakia/data/connectors/bma.py @@ -90,6 +90,12 @@ def _filter_data(request, data): filtered["history"].pop("sending") filtered["history"].pop("receiving") filtered["history"].pop("pending") + elif request is bma.wot.requirements: + filtered = copy.deepcopy(data) + for idty in filtered["identities"]: + for c in idty["certifications"]: + c.pop("expiresIn") + return filtered diff --git a/src/sakia/gui/dialogs/connection_cfg/controller.py b/src/sakia/gui/dialogs/connection_cfg/controller.py index 3bc124a0c7e0fc95441b496963ed81904a74be50..f272621f71233feba39d0860662525b953ecf4b7 100644 --- a/src/sakia/gui/dialogs/connection_cfg/controller.py +++ b/src/sakia/gui/dialogs/connection_cfg/controller.py @@ -244,16 +244,20 @@ class ConnectionConfigController(QObject): password = self.view.edit_password.text() self.model.set_scrypt_infos(salt, password, self.view.scrypt_params) self.model.set_uid(self.view.edit_uid.text()) - registered, found_identity = await self.model.check_registered() - self.view.button_connect.setEnabled(True) - self.view.button_register.setEnabled(True) - if registered[0] is False and registered[2] is None: - self.view.display_info(self.tr("Could not find your identity on the network.")) - elif registered[0] is False and registered[2]: - self.view.display_info(self.tr("""Your pubkey or UID is different on the network. -Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) + if not self.model.key_exists(): + registered, found_identity = await self.model.check_registered() + self.view.button_connect.setEnabled(True) + self.view.button_register.setEnabled(True) + if registered[0] is False and registered[2] is None: + self.view.display_info(self.tr("Could not find your identity on the network.")) + elif registered[0] is False and registered[2]: + self.view.display_info(self.tr("""Your pubkey or UID is different on the network. + Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) + else: + self.step_key.set_result(found_identity) else: - self.step_key.set_result(found_identity) + self.view.display_info(self.tr("A connection already exists using this key.")) + except NoPeerAvailable: self.config_dialog.label_error.setText(self.tr("Could not connect. Check node peering entry")) @@ -266,14 +270,17 @@ Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) password = self.view.edit_password.text() self.model.set_scrypt_infos(salt, password, self.view.scrypt_params) self.model.set_uid(self.view.edit_uid.text()) - registered, found_identity = await self.model.check_registered() - if registered[0] is False and registered[2] is None: - self.step_key.set_result(None) - elif registered[0] is False and registered[2]: - self.view.display_info(self.tr("""Your pubkey or UID was already found on the network. -Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) + if not self.model.key_exists(): + registered, found_identity = await self.model.check_registered() + if registered[0] is False and registered[2] is None: + self.step_key.set_result(None) + elif registered[0] is False and registered[2]: + self.view.display_info(self.tr("""Your pubkey or UID was already found on the network. + Yours : {0}, the network : {1}""".format(registered[1], registered[2]))) + else: + self.view.display_info("Your account already exists on the network") else: - self.view.display_info("Your account already exists on the network") + self.view.display_info(self.tr("A connection already exists using this key.")) except NoPeerAvailable: self.view.display_info(self.tr("Could not connect. Check node peering entry")) diff --git a/src/sakia/gui/dialogs/connection_cfg/model.py b/src/sakia/gui/dialogs/connection_cfg/model.py index 318269e3208836a1ff982e0419d65c266f541682..c1a7c3b9b6c054bc7c6e6368a0956fce729eb8f7 100644 --- a/src/sakia/gui/dialogs/connection_cfg/model.py +++ b/src/sakia/gui/dialogs/connection_cfg/model.py @@ -202,3 +202,5 @@ Current database is storing {1} network.""".format(node_connector.node.currency, return registered, found_identity + def key_exists(self): + return self.connection.pubkey in ConnectionsProcessor.instanciate(self.app).pubkeys() diff --git a/src/sakia/services/network.py b/src/sakia/services/network.py index d586463902ed2ee9c488841ec88c96259922f883..472a72b6d03cde4468cdce204b715e94bf34ce6a 100644 --- a/src/sakia/services/network.py +++ b/src/sakia/services/network.py @@ -1,11 +1,10 @@ import asyncio import logging import time -import aiohttp from collections import Counter from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject - +from duniterpy.api import errors from duniterpy.key import VerifyingKey from sakia.data.connectors import NodeConnector from sakia.data.entities import Node @@ -213,12 +212,15 @@ class NetworkService(QObject): except InvalidNodeCurrency as e: self._logger.debug(str(e)) if node: - identity = await self._identities_service.find_from_pubkey(node.pubkey) - identity = await self._identities_service.load_requirements(identity) - node.member = identity.member - node.uid = identity.uid - self._processor.update_node(node) - self.nodes_changed.emit() + try: + identity = await self._identities_service.find_from_pubkey(node.pubkey) + identity = await self._identities_service.load_requirements(identity) + node.member = identity.member + node.uid = identity.uid + self._processor.update_node(node) + self.nodes_changed.emit() + except errors.DuniterError as e: + self._logger.error(e.message) self._app.db.commit() except IndexError: