diff --git a/src/sakia/data/connectors/node.py b/src/sakia/data/connectors/node.py index c352dc990b43c41208833642564bc285cc33044c..303240b4ee1710900435fb322781a32e954d1ec0 100644 --- a/src/sakia/data/connectors/node.py +++ b/src/sakia/data/connectors/node.py @@ -329,7 +329,7 @@ class NodeConnector(QObject): except (WSServerHandshakeError, ClientResponseError, ValueError) as e: self._logger.debug("Websocket peer {0} : {1} - {2}" - .format(type(e).__name__, str(e), self.node.pubkey[:5])) + .format(type(e).__name__, str(e), self.node.pubkey[:5])) await self.request_peers() except (ClientError, gaierror, TimeoutError, DisconnectedError) as e: self._logger.debug("{0} : {1}".format(str(e), self.node.pubkey[:5])) diff --git a/src/sakia/data/entities/identity.py b/src/sakia/data/entities/identity.py index a3ef5a2f2e8dc98f19701263b30ccbf3b30ca787..76dd814285924621cb14804ab0187850b082b011 100644 --- a/src/sakia/data/entities/identity.py +++ b/src/sakia/data/entities/identity.py @@ -19,7 +19,7 @@ class Identity: membership_type = attr.ib(convert=str, default='', validator=lambda s, a, t: t in ('', 'IN', 'OUT'), cmp=False, hash=False) membership_written_on = attr.ib(convert=block_uid, default=BlockUID.empty(), cmp=False, hash=False) - def self_certification(self): + def document(self): """ Creates a self cert document for a given identity :param sakia.data.entities.Identity identity: @@ -27,4 +27,4 @@ class Identity: :rtype: duniterpy.documents.Identity """ return Identity(PROTOCOL_VERSION, self.currency, self.pubkey, - self.uid, self.blockstamp, self.signature) + self.uid, self.blockstamp, self.signature) diff --git a/src/sakia/data/processors/identities.py b/src/sakia/data/processors/identities.py index 654d8191d02bc7e09a2d2b752b2757bc2b206c12..c9898260b758f5faf9d5692d01bc51c20ec9da78 100644 --- a/src/sakia/data/processors/identities.py +++ b/src/sakia/data/processors/identities.py @@ -7,7 +7,7 @@ from ..connectors import BmaConnector from ..processors import NodesProcessor from duniterpy.api import bma, errors from duniterpy.key import SigningKey -from duniterpy.documents import Identity, BlockUID, block_uid +from duniterpy.documents import BlockUID, block_uid from aiohttp.errors import ClientError from sakia.errors import NoPeerAvailable @@ -71,18 +71,22 @@ class IdentitiesProcessor: tries = 0 while tries < 3: try: - data = await self._bma_connector.get(currency, bma.wot.Lookup, req_args={'search': text}) + data = await self._bma_connector.get(currency, bma.wot.lookup, req_args={'search': text}) for result in data['results']: pubkey = result['pubkey'] for uid_data in result['uids']: if not uid_data['revoked']: - identity = Identity(currency, pubkey, uid_data['uid'], - uid_data['meta']['timestamp'], uid_data['self']) + identity = Identity(currency=currency, + pubkey=pubkey, + uid=uid_data['uid'], + blockstamp=uid_data['meta']['timestamp'], + signature=uid_data['self']) if identity not in identities: identities.append(identity) break except (errors.DuniterError, asyncio.TimeoutError, ClientError) as e: tries += 1 + self._logger.debug(str(e)) except NoPeerAvailable as e: self._logger.debug(str(e)) return identities diff --git a/src/sakia/gui/dialogs/certification/controller.py b/src/sakia/gui/dialogs/certification/controller.py index 35a11565eb7a321e027c689d36b110014f0203d3..7a19764b57df91e3201ea242e3fd4b98a3dbc9cc 100644 --- a/src/sakia/gui/dialogs/certification/controller.py +++ b/src/sakia/gui/dialogs/certification/controller.py @@ -37,13 +37,10 @@ class CertificationController(ComponentController): """ Instanciate a Certification component :param sakia.gui.component.controller.ComponentController parent: + :param sakia.app.Application app: sakia application :return: a new Certification controller :rtype: CertificationController """ - account = kwargs['account'] - community = kwargs['community'] - communities_names = [c.name for c in account.communities] - contacts_names = [c['name'] for c in account.contacts] view = CertificationView(parent.view, None, None, communities_names, contacts_names) model = CertificationModel(None, app, account, community) diff --git a/src/sakia/gui/dialogs/certification/view.py b/src/sakia/gui/dialogs/certification/view.py index 992f9331d1a17edb046fec99866e3423068bff94..f3802e6e75eb41226cb38f993539e9cc8fda75ec 100644 --- a/src/sakia/gui/dialogs/certification/view.py +++ b/src/sakia/gui/dialogs/certification/view.py @@ -34,7 +34,7 @@ class CertificationView(QDialog, Ui_CertificationDialog): pubkey_changed = pyqtSignal() - def __init__(self, parent, search_user_view, user_information_view, communities_names, contacts_names): + def __init__(self, parent, search_user_view, user_information_view): """ :param parent: diff --git a/src/sakia/gui/navigation/graphs/wot/controller.py b/src/sakia/gui/navigation/graphs/wot/controller.py index 9df22776ab9118385379548ee860c25f4c4ef3ad..df885f92e00bf6e946ca41ab4f0bb5e375958c97 100644 --- a/src/sakia/gui/navigation/graphs/wot/controller.py +++ b/src/sakia/gui/navigation/graphs/wot/controller.py @@ -33,10 +33,9 @@ class WotController(BaseGraphController): model = WotModel(None, app, connection, blockchain_service, identities_service) wot = cls(parent, view, model) model.setParent(wot) - #search_user = SearchUserController.create(wot, app, **{'account': account, - # 'community': community}) - #wot.view.set_search_user(search_user.view) - #search_user.identity_selected.connect(wot.center_on_identity) + search_user = SearchUserController.create(wot, app, **{'connection': connection}) + wot.view.set_search_user(search_user.view) + search_user.identity_selected.connect(wot.center_on_identity) return wot @property diff --git a/src/sakia/gui/sub/search_user/controller.py b/src/sakia/gui/sub/search_user/controller.py index c4cfc498e352f793d5acaf24fa66358e614e10ff..d459bef1c38203d2118880a80f14fe902cd85b6c 100644 --- a/src/sakia/gui/sub/search_user/controller.py +++ b/src/sakia/gui/sub/search_user/controller.py @@ -27,11 +27,10 @@ class SearchUserController(ComponentController): @classmethod def create(cls, parent, app, **kwargs): - account = kwargs['account'] - community = kwargs['community'] + connection = kwargs['connection'] view = SearchUserView(parent.view) - model = SearchUserModel(parent, app, account, community) + model = SearchUserModel(parent, app, connection) search_user = cls(parent, view, model) model.setParent(search_user) return search_user @@ -70,10 +69,10 @@ class SearchUserController(ComponentController): self.model.select_identity(index) self.identity_selected.emit(self.model.identity()) - def set_community(self, community): + def set_connection(self, connection): """ Set community - :param sakia.core.Community community: + :param sakia.data.entities.Connection connection :return: """ - self.model.community = community + self.model.connection = connection diff --git a/src/sakia/gui/sub/search_user/model.py b/src/sakia/gui/sub/search_user/model.py index 7ccb9a4fc03d47c2f391764ca513da6a5d584df8..029ff8d313c7755d7189a76c7f51a37ff63b47d6 100644 --- a/src/sakia/gui/sub/search_user/model.py +++ b/src/sakia/gui/sub/search_user/model.py @@ -1,6 +1,7 @@ from sakia.gui.component.model import ComponentModel from duniterpy.api import errors, bma from sakia.errors import NoPeerAvailable +from sakia.data.processors import IdentitiesProcessor import logging @@ -10,18 +11,17 @@ class SearchUserModel(ComponentModel): The model of Navigation component """ - def __init__(self, parent, app, currency, identities_processor): + def __init__(self, parent, app, connection): """ :param sakia.gui.search_user.controller.NetworkController parent: the controller - :param sakia.core.Application app: the app - :param str currency: the currency - :param sakia.data.processors.IdentitiesProcessor identities_processor: the identities processor + :param sakia.app.Application app: the app + :param sakia.data.entities.Connection connection: the connection """ super().__init__(parent) self.app = app - self.currency = currency - self.identities_processor = identities_processor + self.identities_processor = IdentitiesProcessor.instanciate(app) + self.connection = connection self._nodes = list() self._current_identity = None @@ -46,7 +46,7 @@ class SearchUserModel(ComponentModel): :return: """ try: - self._nodes = await self.identities_processor.lookup(self.currency, text) + self._nodes = await self.identities_processor.lookup(self.connection.currency, text) except errors.DuniterError as e: if e.ucode == errors.NO_MATCHING_IDENTITY: self._nodes = list() diff --git a/src/sakia/services/documents.py b/src/sakia/services/documents.py index 1cdbdad865e710af4619fa64dbd405944b6e4c61..a97a97268cf47205452a73c439825304dc37af07 100644 --- a/src/sakia/services/documents.py +++ b/src/sakia/services/documents.py @@ -110,8 +110,8 @@ class DocumentsService: self.pubkey, identity.pubkey, blockUID, None) key = SigningKey(salt, password) - certification.sign(identity.self_certification(), [key]) - signed_cert = certification.signed_raw(identity.self_certification()) + certification.sign(identity.document(), [key]) + signed_cert = certification.signed_raw(identity.document()) self._logger.debug("Certification : {0}".format(signed_cert)) responses = await self._bma_connector.bma_access.broadcast(currency, bma.wot.Certify, {}, @@ -138,7 +138,7 @@ class DocumentsService: :param str password: The account SigningKey password """ revocation = Revocation(PROTOCOL_VERSION, currency, None) - self_cert = identity.self_certification() + self_cert = identity.document() key = SigningKey(salt, password) revocation.sign(self_cert, [key]) @@ -173,7 +173,7 @@ class DocumentsService: :param str password: The account SigningKey password """ document = Revocation(PROTOCOL_VERSION, currency, identity.pubkey, "") - self_cert = identity.self_certification() + self_cert = identity.document() key = SigningKey(salt, password)