From 44cd9a846f783757c637e1147c0d9e830540dd02 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Tue, 3 Feb 2015 08:27:02 +0100 Subject: [PATCH] Transactions refused now appear in red --- src/cutecoin/core/transfer.py | 9 +++++++-- src/cutecoin/core/wallet.py | 22 ++++++++++++---------- src/cutecoin/models/txhistory.py | 10 ++++++++-- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/cutecoin/core/transfer.py b/src/cutecoin/core/transfer.py index 313247e4..1c99a8cf 100644 --- a/src/cutecoin/core/transfer.py +++ b/src/cutecoin/core/transfer.py @@ -3,7 +3,7 @@ Created on 31 janv. 2015 @author: inso ''' - +import logging from ucoinpy.api import bma from ucoinpy.documents.transaction import Transaction @@ -65,10 +65,15 @@ class Transfer(object): self.metadata['time'] = community.get_block().time def check_registered(self, tx, metadata): + + logging.debug("{0} > {1} ?".format(metadata['block'], + self.metadata['block'] + 15)) if tx.signed_raw() == self.txdoc.signed_raw(): self.state = Transfer.VALIDATED self.metadata = metadata - if metadata['block'] > self.metadata['block'] + 15: + + def check_refused(self, block): + if block > self.metadata['block'] + 15: self.state = Transfer.REFUSED diff --git a/src/cutecoin/core/wallet.py b/src/cutecoin/core/wallet.py index 69258251..00489d21 100644 --- a/src/cutecoin/core/wallet.py +++ b/src/cutecoin/core/wallet.py @@ -59,14 +59,15 @@ class Cache(): def refresh(self, community): current_block = 0 try: - try: - block_data = community.request(bma.blockchain.Current) - current_block = block_data['number'] - except ValueError as e: - if '404' in str(e): - current_block = 0 - else: - raise + block_data = community.current_blockid() + current_block = block_data['number'] + + # Lets look if transactions took too long to be validated + awaiting = [t for t in self._transfers + if t.state == Transfer.AWAITING] + for transfer in awaiting: + transfer.check_refused(current_block) + with_tx = community.request(bma.blockchain.TX) # We parse only blocks with transactions @@ -109,8 +110,9 @@ class Cache(): if tx.signed_raw() not in awaiting_docs: transfer = Transfer.create_validated(tx, metadata) self._transfers.append(transfer) - for transfer in awaiting: - transfer.check_registered(tx, metadata) + else: + for transfer in awaiting: + transfer.check_registered(tx, metadata) else: outputs = [o for o in tx.outputs if o.pubkey == self.wallet.pubkey] diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py index 2b48c869..d7065ff0 100644 --- a/src/cutecoin/models/txhistory.py +++ b/src/cutecoin/models/txhistory.py @@ -9,8 +9,8 @@ from ..core.transfer import Transfer, Received from ..core.person import Person from ..tools.exceptions import PersonNotFoundError from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \ - QDateTime, QModelIndex -from PyQt5.QtGui import QFont + QDateTime +from PyQt5.QtGui import QFont, QColor class TxFilterProxyModel(QSortFilterProxyModel): @@ -147,9 +147,15 @@ class HistoryTableModel(QAbstractTableModel): font = QFont() if transfer.state == Transfer.AWAITING: font.setItalic(True) + elif transfer.state == Transfer.REFUSED: + font.setItalic(True) else: font.setItalic(False) return font + if role == Qt.ForegroundRole: + if transfer.state == Transfer.REFUSED: + return QColor(Qt.red) + def flags(self, index): return Qt.ItemIsSelectable | Qt.ItemIsEnabled -- GitLab