diff --git a/src/cutecoin/__init__.py b/src/cutecoin/__init__.py index 684173bd8f9c8eabbacb5248c5454a08e57dd4a2..c11c8dd87f7145472b65a8b2ddd1be990342e64d 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 b01a44267d65eac1dfdc34218632f3b8fb986740..dcfeb9cfbbcad3db288918c9997acfbfafade8ea 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 145ae11265bd8a583a2063a31b433a29dd2a7038..729d843f66eefe0357aa4ee6e1d5dd733524c6fd 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 e0142c55189f7e05684f9f2b860ab108642ffb3d..ed333a20cb532db12b4b62a8f232ec3fb55d4f6f 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 511aa594a70fbff56c6fc8510d054e09192a1941..a704fc9674397728b95ac6d0e04002018f17c8e7 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()