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)