From c15569449fb1a860a5598bcc20746761c8bf9dd9 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Wed, 7 Oct 2015 08:23:35 +0200 Subject: [PATCH] Enhanced UID finding ( bug #232 ) --- src/cutecoin/core/registry/identities.py | 1 - src/cutecoin/core/registry/identity.py | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/cutecoin/core/registry/identities.py b/src/cutecoin/core/registry/identities.py index 64a92854..51a56796 100644 --- a/src/cutecoin/core/registry/identities.py +++ b/src/cutecoin/core/registry/identities.py @@ -83,7 +83,6 @@ class IdentitiesRegistry: identity.blockchain_state = BlockchainState.BUFFERED identity.local_state = LocalState.PARTIAL return identity - logging.debug("Lookup : found {0}".format(identity)) except ValueError as e: lookup_tries += 1 except asyncio.TimeoutError: diff --git a/src/cutecoin/core/registry/identity.py b/src/cutecoin/core/registry/identity.py index c77d3d9b..2d181611 100644 --- a/src/cutecoin/core/registry/identity.py +++ b/src/cutecoin/core/registry/identity.py @@ -244,6 +244,7 @@ class Identity(QObject): :param cutecoin.core.registry.identities.IdentitiesRegistry identities_registry: The identities registry :param cutecoin.core.community.Community community: The community target to request the join date :return: The list of the certifiers of this community + :rtype: list """ certifiers = list() try: @@ -269,6 +270,7 @@ class Identity(QObject): data = yield from community.bma_access.future_request(bma.wot.Lookup, {'search': self.pubkey}) for result in data['results']: if result["pubkey"] == self.pubkey: + self._refresh_uid(result['uids']) for uid_data in result['uids']: for certifier_data in uid_data['others']: for uid in certifier_data['uids']: @@ -322,6 +324,7 @@ class Identity(QObject): :param cutecoin.core.community.Community community: The community target to request the join date :return: The list of the certified persons of this community in BMA json format + :rtype: list """ certified_list = list() try: @@ -345,6 +348,7 @@ class Identity(QObject): data = yield from community.bma_access.future_request(bma.wot.Lookup, {'search': self.pubkey}) for result in data['results']: if result["pubkey"] == self.pubkey: + self._refresh_uid(result['uids']) for certified_data in result['signed']: certified = {} certified['identity'] = identities_registry.from_handled_data(certified_data['uid'], @@ -394,6 +398,20 @@ class Identity(QObject): current_time = time.time() return expiration_date - current_time + def _refresh_uid(self, uids): + """ + Refresh UID from uids list, got from a successful lookup request + :param list uids: UIDs got from a lookup request + """ + if self.local_state == LocalState.NOT_FOUND: + for uid_data in uids: + if uid_data["meta"]["timestamp"] > timestamp: + timestamp = uid_data["meta"]["timestamp"] + identity_uid = uid_data["uid"] + self.uid = identity_uid + self.blockchain_state = BlockchainState.BUFFERED + self.local_state = LocalState.PARTIAL + def jsonify(self): """ Get the community as dict in json format. -- GitLab