From 4d530222a62dbbe134816e6cbba5e812a0eb6891 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Sun, 28 Dec 2014 15:29:22 +0100 Subject: [PATCH] Commit before merging --- src/cutecoin/core/account.py | 19 +++++++--- src/cutecoin/gui/community_tab.py | 44 ++++++++++++++++++----- src/cutecoin/gui/process_cfg_community.py | 4 ++- src/cutecoin/gui/transfer.py | 2 -- 4 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/cutecoin/core/account.py b/src/cutecoin/core/account.py index b81f1c5e..c1e4e235 100644 --- a/src/cutecoin/core/account.py +++ b/src/cutecoin/core/account.py @@ -9,6 +9,7 @@ from ucoinpy.api import bma from ucoinpy.api.bma import ConnectionHandler from ucoinpy.documents.peer import Peer from ucoinpy.documents.certification import SelfCertification, Certification +from ucoinpy.documents.membership import Membership from ucoinpy.key import SigningKey from ..tools.exceptions import PersonNotFoundError @@ -177,11 +178,21 @@ class Account(object): 'self_': selfcert.signed_raw(), 'other': []}) - def send_membership_in(self, community): - return community.send_membership(self, "IN") + def send_membership(self, password, community, type): + self_ = Person.lookup(self.pubkey, community) + selfcert = self_.selfcert(community) - def send_membership_out(self, community): - return community.send_membership(self, "OUT") + block = community.get_block() + block_hash = hashlib.sha1(block.signed_raw().encode("ascii")).hexdigest().upper() + membership = Membership(PROTOCOL_VERSION, community.currency, + selfcert.pubkey, block.number, + block_hash, type, selfcert.uid, + selfcert.timestamp, None) + key = SigningKey(self.salt, password) + membership.sign(key) + logging.debug("Membership : {0}".format(membership.signed_raw())) + community.post(bma.blockchain.Membership, {}, + {'membership': membership.signed_raw()}) def jsonify_contacts(self): data = [] diff --git a/src/cutecoin/gui/community_tab.py b/src/cutecoin/gui/community_tab.py index 2b6a4383..4af816ce 100644 --- a/src/cutecoin/gui/community_tab.py +++ b/src/cutecoin/gui/community_tab.py @@ -5,8 +5,8 @@ Created on 2 févr. 2014 ''' import logging -from PyQt5.QtCore import Qt, QSignalMapper -from PyQt5.QtWidgets import QWidget, QErrorMessage, QAction, QMenu +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QWidget, QMessageBox, QAction, QMenu, QInputDialog, QLineEdit from ..models.members import MembersListModel from ..gen_resources.community_tab_uic import Ui_CommunityTabWidget from .add_contact import AddContactDialog @@ -89,11 +89,39 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): dialog.exec_() def send_membership_demand(self): - result = self.account.send_membership_in(self.community) - if (result): - QErrorMessage(self).showMessage(result) + password = "" + message = "Please enter your password" + + while not self.account.check_password(password): + password = QInputDialog.getText(self, "Account password", + message, + QLineEdit.Password) + message = "Error, wrong password. Please enter your password" + if password[1] is True: + password = password[0] + else: + return + try: + self.account.send_membership(password, self.community, 'IN') + except ValueError as e: + QMessageBox.critical(self, "Join demand error", + e.message) def send_membership_leaving(self): - result = self.account.send_membership_out(self.community) - if (result): - QErrorMessage(self).showMessage(result) + password = "" + message = "Please enter your password" + + while not self.account.check_password(password): + password = QInputDialog.getText(self, "Account password", + message, + QLineEdit.Password) + message = "Error, wrong password. Please enter your password" + if password[1] is True: + password = password[0] + else: + return + try: + self.account.send_membership(password, self.community, 'OUT') + except ValueError as e: + QMessageBox.critical(self, "Leaving demand error", + e.message) diff --git a/src/cutecoin/gui/process_cfg_community.py b/src/cutecoin/gui/process_cfg_community.py index e82ea849..d719cd88 100644 --- a/src/cutecoin/gui/process_cfg_community.py +++ b/src/cutecoin/gui/process_cfg_community.py @@ -167,11 +167,13 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog): Would you like to publish the key ?".format(self.account.pubkey)) if reply == QMessageBox.Yes: password = "" + message = "Please enter your password" while not self.account.check_password(password): password = QInputDialog.getText(self, "Account password", - "Wrong password.\nPlease enter your password", + message, QLineEdit.Password) + message = "Error, wrong password. Please enter your password" if password[1] is True: password = password[0] else: diff --git a/src/cutecoin/gui/transfer.py b/src/cutecoin/gui/transfer.py index bca2bd35..02977180 100644 --- a/src/cutecoin/gui/transfer.py +++ b/src/cutecoin/gui/transfer.py @@ -39,8 +39,6 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): for contact in sender.contacts: self.combo_contact.addItem(contact.name) - self.edit_message.setEnabled(False) - def accept(self): message = self.edit_message.text() -- GitLab