From e505970cdbbe0629a4cec51a0c386664ebd98501 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Mon, 11 May 2015 16:52:11 +0200 Subject: [PATCH] Fix bugs in transactions tab : - Transactions order by date was not correct ( issue #123 ) - From transactions tab, the transfers dialog call was wrong --- src/cutecoin/__init__.py | 2 +- src/cutecoin/core/transfer.py | 1 + src/cutecoin/core/wallet.py | 17 ++++++++++++----- src/cutecoin/gui/transactions_tab.py | 2 +- src/cutecoin/models/txhistory.py | 23 ++++++++++++++++++----- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/cutecoin/__init__.py b/src/cutecoin/__init__.py index 684173bd..c11c8dd8 100644 --- a/src/cutecoin/__init__.py +++ b/src/cutecoin/__init__.py @@ -1,2 +1,2 @@ -__version_info__ = ('0', '9', '2') +__version_info__ = ('0', '10', '0') __version__ = '.'.join(__version_info__) diff --git a/src/cutecoin/core/transfer.py b/src/cutecoin/core/transfer.py index b01a4426..dcfeb9cf 100644 --- a/src/cutecoin/core/transfer.py +++ b/src/cutecoin/core/transfer.py @@ -48,6 +48,7 @@ class Transfer(object): assert('comment' in metadata) assert('issuer_uid' in metadata) assert('receiver_uid' in metadata) + assert('txid' in metadata) self.txdoc = txdoc self.state = state diff --git a/src/cutecoin/core/wallet.py b/src/cutecoin/core/wallet.py index 145ae112..729d843f 100644 --- a/src/cutecoin/core/wallet.py +++ b/src/cutecoin/core/wallet.py @@ -68,7 +68,8 @@ class Cache(): def transfers(self): return [t for t in self._transfers if t.state != Transfer.DROPPED] - def _parse_transaction(self, community, tx, block_number, mediantime, received_list): + def _parse_transaction(self, community, tx, block_number, + mediantime, received_list, txid): logging.debug(tx) receivers = [o.pubkey for o in tx.outputs if o.pubkey != tx.issuers[0]] @@ -89,7 +90,8 @@ class Cache(): 'issuer': tx.issuers[0], 'issuer_uid': issuer_uid, 'receiver': receivers[0], - 'receiver_uid': receiver_uid} + 'receiver_uid': receiver_uid, + 'txid': txid} in_issuers = len([i for i in tx.issuers if i == self.wallet.pubkey]) > 0 @@ -136,9 +138,10 @@ class Cache(): except: logging.debug("Error in {0}".format(block_number)) raise - for tx in block_doc.transactions: + for (txid, tx) in enumerate(block_doc.transactions): self._parse_transaction(community, tx, block_number, - block_doc.mediantime, received_list) + block_doc.mediantime, received_list, + txid) logging.debug("Received {0} transactions".format(len(received_list))) awaiting = [t for t in self._transfers @@ -379,6 +382,9 @@ class Wallet(QObject): ''' time = community.get_block().mediantime block_number = community.current_blockid()['number'] + block = community.request(bma.blockchain.Block, + req_args={'number': block_number}) + txid = len(block['transactions']) key = None logging.debug("Key : {0} : {1}".format(salt, password)) if self.walletid == 0: @@ -404,7 +410,8 @@ class Wallet(QObject): 'issuer_uid': issuer_uid, 'receiver': recipient, 'receiver_uid': receiver_uid, - 'comment': message + 'comment': message, + 'txid': txid } transfer = Transfer.initiate(metadata) diff --git a/src/cutecoin/gui/transactions_tab.py b/src/cutecoin/gui/transactions_tab.py index e0142c55..ed333a20 100644 --- a/src/cutecoin/gui/transactions_tab.py +++ b/src/cutecoin/gui/transactions_tab.py @@ -122,7 +122,7 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget): state_col) state_data = model.sourceModel().data(state_index, Qt.DisplayRole) - pubkey_col = model.sourceModel().column_types.index('uid') + pubkey_col = model.sourceModel().column_types.index('pubkey') person_index = model.sourceModel().index(source_index.row(), pubkey_col) person = model.sourceModel().data(person_index, Qt.DisplayRole) diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py index 511aa594..a704fc96 100644 --- a/src/cutecoin/models/txhistory.py +++ b/src/cutecoin/models/txhistory.py @@ -62,7 +62,7 @@ class TxFilterProxyModel(QSortFilterProxyModel): return in_period(date) def columnCount(self, parent): - return self.sourceModel().columnCount(None) - 1 + return self.sourceModel().columnCount(None) - 3 def setSourceModel(self, sourceModel): self.community = sourceModel.community @@ -80,6 +80,11 @@ class TxFilterProxyModel(QSortFilterProxyModel): return self.sortOrder() == Qt.DescendingOrder elif right_data == "": return self.sortOrder() == Qt.AscendingOrder + if left_data == right_data: + txid_col = source_model.column_types.index('txid') + txid_left = source_model.index(left.row(), txid_col) + txid_right = source_model.index(right.row(), txid_col) + return (txid_left < txid_right) return (left_data < right_data) @@ -160,7 +165,9 @@ class HistoryTableModel(QAbstractTableModel): 'payment', 'deposit', 'comment', - 'state' + 'state', + 'txid', + 'pubkey' ) self.column_headers = ( @@ -169,7 +176,9 @@ class HistoryTableModel(QAbstractTableModel): self.tr('Payment'), self.tr('Deposit'), self.tr('Comment'), - self.tr('State') + 'State', + 'TXID' + 'Pubkey' ) @property @@ -187,9 +196,11 @@ class HistoryTableModel(QAbstractTableModel): sender = "pub:{0}".format(transfer.metadata['issuer'][:5]) date_ts = transfer.metadata['time'] + txid = transfer.metadata['txid'] return (date_ts, sender, "", amount, - comment, transfer.state) + comment, transfer.state, txid, + transfer.metadata['issuer']) def data_sent(self, transfer): amount = transfer.metadata['amount'] @@ -203,9 +214,11 @@ class HistoryTableModel(QAbstractTableModel): date_ts = transfer.metadata['time'] + txid = transfer.metadata['txid'] return (date_ts, receiver, amount, - "", comment, transfer.state) + "", comment, transfer.state, txid, + transfer.metadata['receiver']) def refresh_transfers(self): self.beginResetModel() -- GitLab