From 6e7763bdf7dd4109be47311c9c473e01f5f394fd Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Wed, 16 Sep 2015 19:49:42 +0200
Subject: [PATCH] Fix lookup not called when looking for identies

---
 src/cutecoin/core/registry/identities.py | 11 ++++-------
 src/cutecoin/gui/identities_tab.py       |  2 +-
 src/cutecoin/gui/transactions_tab.py     |  2 ++
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/cutecoin/core/registry/identities.py b/src/cutecoin/core/registry/identities.py
index 0132ba97..ba8857ac 100644
--- a/src/cutecoin/core/registry/identities.py
+++ b/src/cutecoin/core/registry/identities.py
@@ -47,8 +47,7 @@ class IdentitiesRegistry:
     @asyncio.coroutine
     def future_find(self, pubkey, community):
         def lookup():
-            identity = Identity.empty(pubkey)
-            self._instances[pubkey] = identity
+            nonlocal identity
             lookup_tries = 0
             while lookup_tries < 3:
                 try:
@@ -67,7 +66,6 @@ class IdentitiesRegistry:
                             identity.blockchain_state = BlockchainState.BUFFERED
                             identity.local_state = LocalState.PARTIAL
                             logging.debug("Lookup : found {0}".format(identity))
-                    return identity
                 except ValueError as e:
                     lookup_tries += 1
                 except asyncio.TimeoutError:
@@ -75,8 +73,7 @@ class IdentitiesRegistry:
                 except ClientError:
                     lookup_tries += 1
                 except NoPeerAvailable:
-                    return identity
-            return identity
+                    pass
 
         if pubkey in self._instances:
             identity = self._instances[pubkey]
@@ -92,8 +89,8 @@ class IdentitiesRegistry:
                     identity.blockchain_state = BlockchainState.VALIDATED
                     return identity
                 except ValueError as e:
-                    if '404' in str(e):
-                        return (yield from lookup())
+                    if '404' in str(e) or '400' in str(e):
+                        yield from lookup()
                     else:
                         tries += 1
                 except asyncio.TimeoutError:
diff --git a/src/cutecoin/gui/identities_tab.py b/src/cutecoin/gui/identities_tab.py
index a9a3e5dc..7c39dfeb 100644
--- a/src/cutecoin/gui/identities_tab.py
+++ b/src/cutecoin/gui/identities_tab.py
@@ -222,6 +222,7 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
         if self.account and self.community:
             try:
                 self.busy.show()
+                self.refresh_identities([])
                 self_identity = yield from self.account.identity(self.community)
                 account_connections = []
                 certs_of = yield from self_identity.unique_valid_certifiers_of(self.app.identities_registry, self.community)
@@ -238,7 +239,6 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
             except NoPeerAvailable:
                 pass
             finally:
-                self.refresh_identities([])
                 self.busy.hide()
 
     @once_at_a_time
diff --git a/src/cutecoin/gui/transactions_tab.py b/src/cutecoin/gui/transactions_tab.py
index cf6a431e..8ef3ee40 100644
--- a/src/cutecoin/gui/transactions_tab.py
+++ b/src/cutecoin/gui/transactions_tab.py
@@ -98,6 +98,8 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
             self.date_to.setMaximumDateTime(tomorrow_datetime)
         except NoPeerAvailable as e:
             logging.debug(str(e))
+        except ValueError as e:
+            logging.debug(str(e))
 
     def refresh(self):
         #TODO: Use resetmodel instead of destroy/create
-- 
GitLab