diff --git a/src/cutecoin/core/transfer.py b/src/cutecoin/core/transfer.py index 313247e4d15f029e269cec84cfc805eee78ca8d1..1c99a8cf9f303dc0c0b34e422be1715aeeec5ef1 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 692582519e9437a46266356c59429c6fcab7b651..00489d2149754c742543e2c292306c9f0c700401 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 2b48c869fb7365a50e5a67dc16cf880074754432..d7065ff0412260fd867c9c76456cc347ca98787c 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