From 30c839694cff2d674faeae0f8d02f734ace520c8 Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Sat, 28 Feb 2015 16:29:04 +0100
Subject: [PATCH] Configure community possible again

---
 src/cutecoin/core/net/node.py             |  2 -
 src/cutecoin/gui/process_cfg_community.py |  7 +-
 src/cutecoin/models/peer.py               | 82 -------------------
 src/cutecoin/models/peering.py            | 98 ++++++++++++++++++-----
 4 files changed, 81 insertions(+), 108 deletions(-)
 delete mode 100644 src/cutecoin/models/peer.py

diff --git a/src/cutecoin/core/net/node.py b/src/cutecoin/core/net/node.py
index c8b1d6aa..2d53f67c 100644
--- a/src/cutecoin/core/net/node.py
+++ b/src/cutecoin/core/net/node.py
@@ -7,8 +7,6 @@ Created on 21 févr. 2015
 from ucoinpy.documents.peer import Peer, BMAEndpoint, Endpoint
 from ucoinpy.api import bma
 from requests.exceptions import RequestException
-from ...core.person import Person
-from ...tools.exceptions import PersonNotFoundError
 import logging
 import time
 
diff --git a/src/cutecoin/gui/process_cfg_community.py b/src/cutecoin/gui/process_cfg_community.py
index db84a69a..29a6e72b 100644
--- a/src/cutecoin/gui/process_cfg_community.py
+++ b/src/cutecoin/gui/process_cfg_community.py
@@ -92,8 +92,7 @@ class StepPageAddpeers(Step):
 
     def display_page(self):
         # We add already known peers to the displayed list
-        for peer in self.config_dialog.community.peers:
-            self.config_dialog.peers.append(peer)
+        self.config_dialog.nodes = self.config_dialog.community.nodes
         try:
             tree_model = PeeringTreeModel(self.config_dialog.community)
         except requests.exceptions.RequestException:
@@ -119,7 +118,7 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog):
         self.account = account
         self.password_asker = password_asker
         self.step = None
-        self.peers = []
+        self.nodes = []
 
         step_init = StepPageInit(self)
         step_add_peers = StepPageAddpeers(self)
@@ -189,7 +188,7 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog):
             menu = QMenu()
             action = menu.addAction("Delete", self.removeNode)
             if self.community is not None:
-                if len(self.peers) == 1:
+                if len(self.nodes) == 1:
                     action.setEnabled(False)
             menu.exec_(self.mapToGlobal(point))
 
diff --git a/src/cutecoin/models/peer.py b/src/cutecoin/models/peer.py
deleted file mode 100644
index 55b6cb4e..00000000
--- a/src/cutecoin/models/peer.py
+++ /dev/null
@@ -1,82 +0,0 @@
-'''
-Created on 5 févr. 2014
-
-@author: inso
-'''
-
-import logging
-from ucoinpy.documents.peer import BMAEndpoint, Peer
-
-
-class RootItem(object):
-
-    def __init__(self, name):
-        self.name = name
-        self.main_peer_items = []
-
-    def appendChild(self, item):
-        self.main_peer_items.append(item)
-
-    def child(self, row):
-        return self.main_peer_items[row]
-
-    def childCount(self):
-        return len(self.main_peer_items)
-
-    def columnCount(self):
-        return 1
-
-    def data(self, column):
-        try:
-            return self.name
-        except IndexError:
-            return None
-
-    def parent(self):
-        return None
-
-    def row(self):
-        return 0
-
-
-class PeerItem(object):
-
-    def __init__(self, main_peer, root_item):
-        e = next((e for e in main_peer.endpoints if type(e) is BMAEndpoint))
-        if e.server:
-            self.main_peer_text = "{0}:{1}".format(e.server, e.port)
-        elif e.ipv4:
-            self.main_peer_text = "{0}:{1}".format(e.ipv4, e.port)
-        elif e.ipv6:
-            self.main_peer_text = "{0}:{1}".format(e.ipv6, e.port)
-        else:
-            self.main_peer_text = "{0}".format(main_peer.pubkey)
-
-        self.root_item = root_item
-        self.peer_items = []
-
-    def appendChild(self, node_item):
-        self.peer_items.append(node_item)
-
-    def child(self, row):
-        return self.peer_items[row]
-
-    def childCount(self):
-        return len(self.peer_items)
-
-    def columnCount(self):
-        return 1
-
-    def data(self, column):
-        try:
-            return self.main_peer_text
-        except IndexError:
-            return None
-
-    def parent(self):
-        return self.root_item
-
-    def row(self):
-        if self.root_item:
-            return self.root_item.main_peer_items.index(self)
-        return 0
diff --git a/src/cutecoin/models/peering.py b/src/cutecoin/models/peering.py
index 079218b2..c3cc96f5 100644
--- a/src/cutecoin/models/peering.py
+++ b/src/cutecoin/models/peering.py
@@ -7,11 +7,84 @@ Created on 5 févr. 2014
 from ucoinpy.api import bma
 from ucoinpy.documents.peer import BMAEndpoint, Peer
 from PyQt5.QtCore import QAbstractItemModel, QModelIndex, Qt
-from .peer import PeerItem, RootItem
 from requests.exceptions import Timeout
 import logging
 
 
+class RootItem(object):
+
+    def __init__(self, name):
+        self.name = name
+        self.node_items = []
+
+    def appendChild(self, item):
+        self.node_items.append(item)
+
+    def child(self, row):
+        return self.node_items[row]
+
+    def childCount(self):
+        return len(self.node_items)
+
+    def columnCount(self):
+        return 1
+
+    def data(self, column):
+        try:
+            return self.name
+        except IndexError:
+            return None
+
+    def parent(self):
+        return None
+
+    def row(self):
+        return 0
+
+
+class NodeItem(object):
+
+    def __init__(self, node, root_item):
+        e = node.endpoint
+        if e.server:
+            self.address = "{0}:{1}".format(e.server, e.port)
+        elif e.ipv4:
+            self.address = "{0}:{1}".format(e.ipv4, e.port)
+        elif e.ipv6:
+            self.address = "{0}:{1}".format(e.ipv6, e.port)
+        else:
+            self.address = "{0}".format(node.pubkey)
+
+        self.root_item = root_item
+        self.node_items = []
+
+    def appendChild(self, node_item):
+        self.node_items.append(node_item)
+
+    def child(self, row):
+        return self.node_items[row]
+
+    def childCount(self):
+        return len(self.node_items)
+
+    def columnCount(self):
+        return 1
+
+    def data(self, column):
+        try:
+            return self.address
+        except IndexError:
+            return None
+
+    def parent(self):
+        return self.root_item
+
+    def row(self):
+        if self.root_item:
+            return self.root_item.node_items.index(self)
+        return 0
+
+
 class PeeringTreeModel(QAbstractItemModel):
 
     '''
@@ -23,7 +96,7 @@ class PeeringTreeModel(QAbstractItemModel):
         Constructor
         '''
         super().__init__(None)
-        self.peers = community.peering()
+        self.nodes = community.nodes
         self.root_item = RootItem(community.currency)
         self.refresh_tree()
 
@@ -98,21 +171,6 @@ class PeeringTreeModel(QAbstractItemModel):
 
     def refresh_tree(self):
         logging.debug("root : " + self.root_item.data(0))
-        for peer in self.peers:
-            logging.debug("Browser peers")
-            peer_item = PeerItem(peer, self.root_item)
-            self.root_item.appendChild(peer_item)
-            try:
-                e = next((e for e in peer.endpoints if type(e) is BMAEndpoint))
-                peers = bma.network.peering.Peers(e.conn_handler()).get()
-                try:
-                    for peer_data in peers:
-                        peer = Peer.from_signed_raw("{0}{1}\n".format(peer_data['value']['raw'],
-                                                                    peer_data['value']['signature']))
-                        child_node_item = PeerItem(peer, peer_item)
-                        peer_item.appendChild(child_node_item)
-                except Timeout:
-                    continue
-
-            except StopIteration as e:
-                continue
+        for node in self.nodes:
+            node_item = NodeItem(node, self.root_item)
+            self.root_item.appendChild(node_item)
-- 
GitLab