From 894a56c4703bc3ba37223de050ed3df6b3487fa5 Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Thu, 17 Sep 2015 20:37:09 +0200
Subject: [PATCH] Fix bug in refresh when multiple calls of the coroutines

---
 src/cutecoin/models/identities.py | 6 +++---
 src/cutecoin/models/network.py    | 8 ++++----
 src/cutecoin/models/txhistory.py  | 4 +++-
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/cutecoin/models/identities.py b/src/cutecoin/models/identities.py
index 54567a0f..9a361b07 100644
--- a/src/cutecoin/models/identities.py
+++ b/src/cutecoin/models/identities.py
@@ -129,11 +129,10 @@ class IdentitiesTableModel(QAbstractTableModel):
         logging.debug("Refresh {0} identities".format(len(identities)))
         self.beginResetModel()
         self.identities_data = []
-        self.endResetModel()
-        self.beginResetModel()
+        identities_data = []
         for identity in identities:
             data = yield from self.identity_data(identity)
-            self.identities_data.append(data)
+            identities_data.append(data)
         if len(identities) > 0:
             try:
                 parameters = yield from self.community.parameters()
@@ -141,6 +140,7 @@ class IdentitiesTableModel(QAbstractTableModel):
             except NoPeerAvailable as e:
                 logging.debug(str(e))
                 self._sig_validity = 0
+        self.identities_data = identities_data
         self.endResetModel()
 
     def rowCount(self, parent):
diff --git a/src/cutecoin/models/network.py b/src/cutecoin/models/network.py
index af360c5a..8c33d71b 100644
--- a/src/cutecoin/models/network.py
+++ b/src/cutecoin/models/network.py
@@ -11,7 +11,7 @@ from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyMode
 from PyQt5.QtGui import QColor, QFont
 
 from ..tools.exceptions import NoPeerAvailable
-from ..tools.decorators import asyncify
+from ..tools.decorators import asyncify, once_at_a_time
 from cutecoin.core.net.node import Node
 
 
@@ -178,12 +178,12 @@ class NetworkTableModel(QAbstractTableModel):
     def refresh_nodes(self):
         self.beginResetModel()
         self.nodes_data = []
-        self.endResetModel()
-        self.beginResetModel()
+        nodes_data = []
         if self.community:
             for node in self.community.network.nodes:
                 data = yield from self.data_node(node)
-                self.nodes_data.append(data)
+                nodes_data.append(data)
+        self.nodes_data = nodes_data
         self.endResetModel()
 
     def rowCount(self, parent):
diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py
index 4d9dfe64..ac0af804 100644
--- a/src/cutecoin/models/txhistory.py
+++ b/src/cutecoin/models/txhistory.py
@@ -289,6 +289,7 @@ class HistoryTableModel(QAbstractTableModel):
     def refresh_transfers(self):
         self.beginResetModel()
         self.transfers_data = []
+        transfers_data = []
         if self.community:
             for transfer in self.transfers():
                 data = None
@@ -300,13 +301,14 @@ class HistoryTableModel(QAbstractTableModel):
                 elif type(transfer) is dict:
                     data = yield from self.data_dividend(transfer)
                 if data:
-                    self.transfers_data.append(data)
+                    transfers_data.append(data)
                 try:
                     members_pubkeys = yield from self.community.members_pubkeys()
                     self._max_validations = self.community.network.fork_window(members_pubkeys) + 1
                 except NoPeerAvailable as e:
                     logging.debug(str(e))
                     self._max_validations = 0
+        self.transfers_data = transfers_data
         self.endResetModel()
 
     def max_validations(self):
-- 
GitLab