From 4e7668d43983504c5be1ba405b75d9f63fd87fb8 Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Sun, 14 Dec 2014 01:24:58 +0100
Subject: [PATCH] Continuing refactoring...

---
 res/ui/accountConfigurationDialog.ui          | 48 ++++++++++--
 res/ui/communityConfigurationDialog.ui        |  2 +-
 src/cutecoin/gui/generateAccountKeyDialog.py  | 77 -------------------
 src/cutecoin/gui/mainWindow.py                |  7 +-
 src/cutecoin/gui/processConfigureAccount.py   | 69 ++++++++---------
 src/cutecoin/gui/processConfigureCommunity.py |  7 +-
 src/cutecoin/models/account/__init__.py       |  6 +-
 src/cutecoin/models/node/__init__.py          |  2 +-
 src/cutecoin/models/node/itemModel.py         |  2 -
 src/cutecoin/models/node/treeModel.py         |  2 +-
 10 files changed, 86 insertions(+), 136 deletions(-)
 delete mode 100644 src/cutecoin/gui/generateAccountKeyDialog.py

diff --git a/res/ui/accountConfigurationDialog.ui b/res/ui/accountConfigurationDialog.ui
index 114ae46a..0b576f1d 100644
--- a/res/ui/accountConfigurationDialog.ui
+++ b/res/ui/accountConfigurationDialog.ui
@@ -126,6 +126,9 @@
              <property name="text">
               <string/>
              </property>
+             <property name="echoMode">
+              <enum>QLineEdit::Password</enum>
+             </property>
              <property name="placeholderText">
               <string>Please repeat your password</string>
              </property>
@@ -333,18 +336,50 @@
    </hints>
   </connection>
   <connection>
-   <sender>button_generate</sender>
-   <signal>clicked()</signal>
+   <sender>edit_email</sender>
+   <signal>textChanged(QString)</signal>
    <receiver>AccountConfigurationDialog</receiver>
-   <slot>open_generate_account_key()</slot>
+   <slot>action_edit_account_key()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>224</x>
-     <y>221</y>
+     <x>199</x>
+     <y>69</y>
     </hint>
     <hint type="destinationlabel">
      <x>199</x>
-     <y>149</y>
+     <y>118</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>edit_password</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>AccountConfigurationDialog</receiver>
+   <slot>action_edit_account_key()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>199</x>
+     <y>98</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>199</x>
+     <y>118</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>edit_password_repeat</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>AccountConfigurationDialog</receiver>
+   <slot>action_edit_account_key()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>199</x>
+     <y>127</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>199</x>
+     <y>118</y>
     </hint>
    </hints>
   </connection>
@@ -358,5 +393,6 @@
   <slot>previous()</slot>
   <slot>open_import_key()</slot>
   <slot>open_generate_account_key()</slot>
+  <slot>action_edit_account_key()</slot>
  </slots>
 </ui>
diff --git a/res/ui/communityConfigurationDialog.ui b/res/ui/communityConfigurationDialog.ui
index 0dd697af..309d2154 100644
--- a/res/ui/communityConfigurationDialog.ui
+++ b/res/ui/communityConfigurationDialog.ui
@@ -23,7 +23,7 @@
    <item>
     <widget class="QStackedWidget" name="stacked_pages">
      <property name="currentIndex">
-      <number>1</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="page_init">
       <layout class="QVBoxLayout" name="verticalLayout_4">
diff --git a/src/cutecoin/gui/generateAccountKeyDialog.py b/src/cutecoin/gui/generateAccountKeyDialog.py
deleted file mode 100644
index 63a66e1e..00000000
--- a/src/cutecoin/gui/generateAccountKeyDialog.py
+++ /dev/null
@@ -1,77 +0,0 @@
-'''
-Created on 22 mai 2014
-
-@author: inso
-'''
-from ucoinpy.key import SigningKey
-
-import re
-import logging
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox, QProgressDialog
-from PyQt5.QtCore import QThread, pyqtSignal
-
-from cutecoin.gen_resources.generateKeyDialog_uic import Ui_GenerateKeyDialog
-
-
-class TaskGenKey(QThread):
-    taskFinished = pyqtSignal()
-
-    def run(self):
-        self.key = self.account.gpg.gen_key(self.input_data)
-        self.taskFinished.emit()
-
-
-class GenerateAccountKeyDialog(QDialog, Ui_GenerateKeyDialog):
-
-    '''
-    classdocs
-    '''
-
-    def __init__(self, account, parent=None):
-        '''
-        Constructor
-        '''
-        super(GenerateAccountKeyDialog, self).__init__()
-        self.setupUi(self)
-        self.account = account
-        self.main_window = parent
-        self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
-
-    def accept(self):
-        name = self.edit_name.text()
-        password = self.edit_password.text()
-        password_repeat = self.edit_password_repeat.text()
-        salt = self.edit_email.text()
-
-    def gen_finished(self):
-        self.progress_dialog.close()
-        self.account.key = SigningKey(self.salt, self.password)
-
-        logging.debug("Key generated : " + self.account.keyid)
-
-        QMessageBox.information(self, "Key generation", "Key " +
-                                self.account.key.pubkey + " has been generated",
-                        QMessageBox.Ok)
-        self.main_window.label_pubkey.setText("Key : " + self.account.key.public_key)
-        self.main_window.button_next.setEnabled(True)
-        self.close()
-
-    def check(self):
-        if len(self.edit_password.text()) < 8:
-            self.label_errors.setText("Please enter a password with more than 8 characters")
-            self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
-            return
-        elif self.edit_password.text() != self.edit_password_repeat.text():
-            self.label_errors.setText("Passwords do not match")
-            self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
-            return
-        else:
-            pattern = re.compile("([A-Za-z-.]+ )([A-Za-z-.]+( )*)+")
-            if not pattern.match(self.edit_name.text()):
-                self.label_errors.setText("Please enter your name and family name.")
-                self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
-                return
-
-        self.label_errors.setText("")
-        self.button_box.button(QDialogButtonBox.Ok).setEnabled(True)
-
diff --git a/src/cutecoin/gui/mainWindow.py b/src/cutecoin/gui/mainWindow.py
index 86b99352..75df75af 100644
--- a/src/cutecoin/gui/mainWindow.py
+++ b/src/cutecoin/gui/mainWindow.py
@@ -117,12 +117,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self.refresh_wallet_content(QModelIndex())
 
     def refresh_wallet_content(self, index):
-        if index.isValid():
-            current_wallet = self.core.current_account.wallets[index.row()]
-            self.list_wallet_content.setModel(CoinsListModel(current_wallet,
-                                                             current_wallet.coins))
-        else:
-            self.list_wallet_content.setModel(CoinsListModel(None, []))
+        pass
 
     def import_account(self):
         dialog = ImportAccountDialog(self.core, self)
diff --git a/src/cutecoin/gui/processConfigureAccount.py b/src/cutecoin/gui/processConfigureAccount.py
index a29982d1..4f82e612 100644
--- a/src/cutecoin/gui/processConfigureAccount.py
+++ b/src/cutecoin/gui/processConfigureAccount.py
@@ -3,8 +3,9 @@ Created on 6 mars 2014
 
 @author: inso
 '''
+import logging
+from ucoinpy.key import SigningKey
 from cutecoin.gen_resources.accountConfigurationDialog_uic import Ui_AccountConfigurationDialog
-from cutecoin.gui.generateAccountKeyDialog import GenerateAccountKeyDialog
 from cutecoin.gui.processConfigureCommunity import ProcessConfigureCommunity
 from cutecoin.models.account.communities.listModel import CommunitiesListModel
 from cutecoin.tools.exceptions import KeyAlreadyUsed, Error
@@ -45,9 +46,10 @@ class StepPageInit(Step):
             self.config_dialog.list_communities.setModel(model)
 
         self.config_dialog.button_previous.setEnabled(False)
+        self.config_dialog.button_next.setEnabled(False)
 
 
-class StepPageGPG(Step):
+class StepPageKey(Step):
     '''
     First step when adding a community
     '''
@@ -55,9 +57,22 @@ class StepPageGPG(Step):
         super().__init__(config_dialog)
 
     def is_valid(self):
-        return self.config_dialog.account.keyid != ''
+        if len(self.config_dialog.edit_password.text()) < 8:
+            return False
+
+        if len(self.config_dialog.edit_email.text()) < 2:
+            return False
+
+        if self.config_dialog.edit_password.text() != \
+            self.config_dialog.edit_password_repeat.text():
+            return False
+
+        return True
 
     def process_next(self):
+        salt = self.config_dialog.edit_email.text()
+        password = self.config_dialog.edit_password.text()
+        self.config_dialog.account.key = SigningKey(salt, password)
         model = CommunitiesListModel(self.config_dialog.account)
         self.config_dialog.list_communities.setModel(model)
 
@@ -82,11 +97,11 @@ class StepPageCommunities(Step):
         '''
         server = self.config_dialog.lineedit_server.text()
         port = self.config_dialog.spinbox_port.value()
-        default_node = Node.create(server, port, trust=True, hoster=True)
+        default_node = Node.create(server, port)
         account = self.config_dialog.account
         self.config_dialog.community = account.communities.add_community(
             default_node)
-        account.wallets.add_wallet(account.keyid,
+        account.wallets.add_wallet(account.key,
                                    self.config_dialog.community)
         self.config_dialog.refresh()
 
@@ -112,10 +127,10 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog):
         self.account = account
         self.core = core
         step_init = StepPageInit(self)
-        step_gpg = StepPageGPG(self)
+        step_key = StepPageKey(self)
         step_communities = StepPageCommunities(self)
-        step_init.next_step = step_gpg
-        step_gpg.next_step = step_communities
+        step_init.next_step = step_key
+        step_key.next_step = step_communities
         self.step = step_init
         self.step.display_page()
         if self.account is None:
@@ -126,6 +141,7 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog):
             self.setWindowTitle("Configure " + self.account.name)
 
     def open_process_add_community(self):
+        logging.debug("Opening configure community dialog")
         dialog = ProcessConfigureCommunity(self.account, None)
         dialog.accepted.connect(self.action_add_community)
         dialog.exec_()
@@ -144,42 +160,18 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog):
     def action_edit_community(self):
         self.list_communities.setModel(CommunitiesListModel(self.account))
 
+    def action_edit_account_key(self):
+        if self.step.is_valid():
+            self.button_next.setEnabled(True)
+        else:
+            self.button_next.setEnabled(False)
+
     def open_process_edit_community(self, index):
         community = self.account.communities[index.row()]
         dialog = ProcessConfigureCommunity(self.account, community)
         dialog.accepted.connect(self.action_edit_community)
         dialog.exec_()
 
-    def open_generate_account_key(self):
-        dialog = GenerateAccountKeyDialog(self.account, self)
-        dialog.exec_()
-
-    def open_import_key(self):
-        keyfile = QFileDialog.getOpenFileName(self,
-                                              "Choose a secret key",
-                                              "",
-                                              "All key files (*.asc);; Any file (*)")
-        keyfile = keyfile[0]
-        key = open(keyfile).read()
-        result = self.account.gpg.import_keys(key)
-        if result.count == 0:
-            QErrorMessage(self).showMessage("Bad key file")
-        else:
-            QMessageBox.information(self, "Key import", "Key " +
-                                    result.fingerprints[0] + " has been imported",
-                            QMessageBox.Ok)
-            if self.account.keyid is not '':
-                self.account.gpg.delete_keys(self.account.keyid)
-
-            secret_keys = self.account.gpg.list_keys(True)
-            for k in secret_keys:
-                if k['fingerprint'] == result.fingerprints[0]:
-                    self.account.keyid = k['keyid']
-
-            self.label_fingerprint.setText("Key : " + result.fingerprints[0])
-            self.edit_secretkey_path.setText(keyfile)
-            self.button_next.setEnabled(True)
-
     def next(self):
         if self.step.next_step is not None:
             if self.step.is_valid():
@@ -191,7 +183,6 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog):
                     self.step.display_page()
                 except Error as e:
                     QErrorMessage(self).showMessage(e.message)
-
         else:
             self.accept()
 
diff --git a/src/cutecoin/gui/processConfigureCommunity.py b/src/cutecoin/gui/processConfigureCommunity.py
index 046ee185..8735a99b 100644
--- a/src/cutecoin/gui/processConfigureCommunity.py
+++ b/src/cutecoin/gui/processConfigureCommunity.py
@@ -4,6 +4,7 @@ Created on 8 mars 2014
 @author: inso
 '''
 
+import logging
 from ucoinpy.api import bma
 from cutecoin.gen_resources.communityConfigurationDialog_uic import Ui_CommunityConfigurationDialog
 from PyQt5.QtWidgets import QDialog, QMenu, QMessageBox, QWidget, QAction
@@ -26,10 +27,12 @@ class StepPageInit(Step):
     '''
     def __init__(self, config_dialog):
         super().__init__(config_dialog)
+        logging.debug("Init")
 
     def is_valid(self):
         server = self.config_dialog.lineedit_server.text()
         port = self.config_dialog.spinbox_port.value()
+        logging.debug("Is valid ? ")
         try:
             bma.network.Peering(server, port)
         except:
@@ -46,6 +49,7 @@ class StepPageInit(Step):
         port = self.config_dialog.spinbox_port.value()
         default_node = Node.create(server, port)
         account = self.config_dialog.account
+        logging.debug("Account : {0}".format(account))
         self.config_dialog.community = account.add_community(default_node)
 
     def display_page(self):
@@ -165,8 +169,9 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog):
         '''
         server = self.lineedit_server.text()
         port = self.spinbox_port.value()
+        logging.debug("Add node : {0}".format(self.community))
         if self.community is not None:
-            self.nodes.append(Node.create(server, port, trust=True))
+            self.nodes.append(Node.create(server, port))
             self.tree_nodes.setModel(NodesTreeModel(self.community,
                                                     self.nodes))
 
diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py
index ff187192..6d8d1e7a 100644
--- a/src/cutecoin/models/account/__init__.py
+++ b/src/cutecoin/models/account/__init__.py
@@ -68,9 +68,11 @@ class Account(object):
         self.contacts.append(person)
 
     def add_community(self, default_node):
+        logging.debug("Adding a community")
         current = bma.blockchain.Current(default_node.connection_handler())
-        amendment_data = current.get()
-        currency = amendment_data['currency']
+        block_data = current.get()
+        currency = block_data['currency']
+        logging.debug("Currency : {0}".format(currency))
         community = self.communities.add_community(currency, default_node)
         self.wallets.add_wallet(currency)
         return community
diff --git a/src/cutecoin/models/node/__init__.py b/src/cutecoin/models/node/__init__.py
index b1308766..2d3d85ba 100644
--- a/src/cutecoin/models/node/__init__.py
+++ b/src/cutecoin/models/node/__init__.py
@@ -14,7 +14,7 @@ class Node(object):
     A ucoin node using BMA protocol
     '''
 
-    def __init__(self, server, port, trust, hoster):
+    def __init__(self, server, port):
         '''
         Constructor
         '''
diff --git a/src/cutecoin/models/node/itemModel.py b/src/cutecoin/models/node/itemModel.py
index 5ace48c7..12ee5b31 100644
--- a/src/cutecoin/models/node/itemModel.py
+++ b/src/cutecoin/models/node/itemModel.py
@@ -43,8 +43,6 @@ class NodeItem(object):
     def __init__(self, main_node, root_item):
         self.main_node_text = main_node.get_text()
         self.root_item = root_item
-        self.trust = main_node.trust
-        self.hoster = main_node.hoster
         self.node_items = []
 
     def appendChild(self, node_item):
diff --git a/src/cutecoin/models/node/treeModel.py b/src/cutecoin/models/node/treeModel.py
index c157b1af..78d88f3e 100644
--- a/src/cutecoin/models/node/treeModel.py
+++ b/src/cutecoin/models/node/treeModel.py
@@ -102,7 +102,7 @@ class NodesTreeModel(QAbstractItemModel):
                 " / " +
                 node_item.data(0))
             self.root_item.appendChild(node_item)
-            for node in node.downstream_peers():
+            for node in node.peers():
                 child_node_item = NodeItem(node, node_item)
                 logging.debug(
                     "\t node : " +
-- 
GitLab