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