diff --git a/src/cutecoin/models/identities.py b/src/cutecoin/models/identities.py index 89c3c1c4a9dc895e5363a0b6ac6cf48e72ffe15d..b5b9e76a4a499a1461b853f6ff2ff8572d32c5b2 100644 --- a/src/cutecoin/models/identities.py +++ b/src/cutecoin/models/identities.py @@ -6,7 +6,7 @@ Created on 5 févr. 2014 from ucoinpy.api import bma from ..core.person import Person -from ..tools.exceptions import NoPeerAvailable +from ..tools.exceptions import NoPeerAvailable, MembershipNotFoundError from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt, \ QDateTime, QModelIndex from PyQt5.QtGui import QColor @@ -29,6 +29,8 @@ class IdentitiesFilterProxyModel(QSortFilterProxyModel): source_model = self.sourceModel() left_data = source_model.data(left, Qt.DisplayRole) right_data = source_model.data(right, Qt.DisplayRole) + left_data = 0 if left_data is None else left_data + right_data = 0 if right_data is None else right_data return (left_data < right_data) def data(self, index, role): @@ -41,20 +43,24 @@ class IdentitiesFilterProxyModel(QSortFilterProxyModel): sig_validity = self.community.parameters['sigValidity'] warning_expiration_time = int(sig_validity / 3) #logging.debug("{0} > {1}".format(current_time, expiration_data)) - will_expire_soon = (current_time > expiration_data*1000 - warning_expiration_time*1000) + if expiration_data is not None: + will_expire_soon = (current_time > expiration_data*1000 - warning_expiration_time*1000) if role == Qt.DisplayRole: if source_index.column() == self.sourceModel().columns_ids.index('renewed'): - date = QDateTime.fromTime_t(source_data) - return date.date() + date = QDateTime.fromTime_t(source_data).date() if source_data is not None else "" + return date if source_index.column() == self.sourceModel().columns_ids.index('expiration'): - date = QDateTime.fromTime_t(source_data) - return date.date() + date = QDateTime.fromTime_t(source_data).date() if source_data is not None else "" + return date if source_index.column() == self.sourceModel().columns_ids.index('pubkey'): return "pub:{0}".format(source_data[:5]) if role == Qt.ForegroundRole: - if will_expire_soon: - return QColor(Qt.red) + if expiration_data: + if will_expire_soon: + return QColor(Qt.red) + else: + return QColor(Qt.blue) return source_data @@ -86,14 +92,19 @@ class IdentitiesTableModel(QAbstractTableModel): return [i[1] for i in self.identities_data] def identity_data(self, person): - join_block = person.membership(self.community)['blockNumber'] - try: - join_date = self.community.get_block(join_block).mediantime - except NoPeerAvailable: - join_date = 0 parameters = self.community.parameters - expiration_date = join_date + parameters['sigValidity'] - logging.debug((person.uid, person.pubkey, join_date, expiration_date)) + try: + join_block = person.membership(self.community)['blockNumber'] + try: + join_date = self.community.get_block(join_block).mediantime + expiration_date = join_date + parameters['sigValidity'] + except NoPeerAvailable: + join_date = None + expiration_date = None + except MembershipNotFoundError: + join_date = None + expiration_date = None + return (person.uid, person.pubkey, join_date, expiration_date) def refresh_identities(self, persons):