Skip to content
Snippets Groups Projects
Unverified Commit 3b434279 authored by inso's avatar inso Committed by GitHub
Browse files

Merge pull request #770 from vtexier/dev

Fix exception after closing certifier information window #769
parents e6b88941 8402a53f
No related branches found
No related tags found
No related merge requests found
from sakia.errors import NoPeerAvailable
from sakia.data.entities import Identity
from sakia.data.entities import Identity, Certification
from sakia.data.processors import BlockchainProcessor
from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt, \
QDateTime, QModelIndex, QLocale, QT_TRANSLATE_NOOP
......@@ -108,47 +108,56 @@ class CertifiersTableModel(QAbstractTableModel):
self.connection = connection
self.blockchain_service = blockchain_service
self.identities_service = identities_service
self._certifiers_data = []
self._certifiers_data = list()
def certifier_data(self, certification):
def init_certifiers(self):
"""
Init table with data to display
"""
self.beginResetModel()
certifications = self.identities_service.certifications_received(self.connection.pubkey)
logging.debug("Refresh {0} certifiers".format(len(certifications)))
certifiers_data = []
for certifier in certifications:
certifiers_data.append(self.certifier_data(certifier))
self._certifiers_data = certifiers_data
self.endResetModel()
def certifier_data(self, certification: Certification) -> tuple:
"""
Return the identity in the form a tuple to display
:param sakia.data.entities.Certification certification: The certification to get data from
:param Certification certification: The certification to get data from
:return: The certification data in the form of a tuple
:rtype: tuple
"""
parameters = self.blockchain_service.parameters()
publication_date = certification.timestamp
identity = self.identities_service.get_identity(certification.certifier)
if not identity:
identity = Identity(currency=certification.currency, pubkey=certification.certifier, uid="")
written = certification.written_on >= 0
if written:
expiration_date = publication_date + parameters.sig_validity
else:
expiration_date = publication_date + parameters.sig_window
return identity.uid, identity.pubkey, publication_date, expiration_date, written, identity
def certifier_loaded(self, identity):
for i, idty in enumerate(self.identities_data):
if idty[CertifiersTableModel.columns_ids.index('identity')] == identity:
self._certifiers_data[i] = self._certifiers_data(identity)
self.dataChanged.emit(self.index(i, 0), self.index(i, len(CertifiersTableModel.columns_ids)))
return
identity = self.identities_service.get_identity(certification.certifier)
if not identity:
identity = Identity(currency=certification.currency, pubkey=certification.certifier, uid="")
def init_certifiers(self):
"""
Change the identities to display
return identity.uid, identity.pubkey, publication_date, expiration_date, written, identity
def certifier_loaded(self, identity: Identity):
"""
self.beginResetModel()
certifications = self.identities_service.certifications_received(self.connection.pubkey)
logging.debug("Refresh {0} certifiers".format(len(certifications)))
certifiers_data = []
for certifier in certifications:
certifiers_data.append(self.certifier_data(certifier))
Update identity of certifier after closing information window
self._certifiers_data = certifiers_data
self.endResetModel()
:param Identity identity: Updated identity of the certifier
:return:
"""
for i, certifier_data in enumerate(self._certifiers_data):
if certifier_data[CertifiersTableModel.columns_ids.index('identity')] == identity:
self._certifiers_data[i] = update_certifier_data_from_identity(certifier_data, identity)
self.dataChanged.emit(self.index(i, 0), self.index(i, len(CertifiersTableModel.columns_ids)))
return
def rowCount(self, parent):
return len(self._certifiers_data)
......@@ -170,3 +179,24 @@ class CertifiersTableModel(QAbstractTableModel):
def flags(self, index):
return Qt.ItemIsSelectable | Qt.ItemIsEnabled
#######################
# STATIC FUNCTIONS
#######################
def update_certifier_data_from_identity(certifier_data: tuple, identity: Identity) -> tuple:
"""
Return certifier data from updated identity
:param tuple certifier_data: Certifier data list
:param Identity identity: Identity of the certifier
:return tuple:
"""
return identity.uid, \
identity.pubkey, \
certifier_data[CertifiersTableModel.columns_ids.index('publication')], \
certifier_data[CertifiersTableModel.columns_ids.index('expiration')], \
certifier_data[CertifiersTableModel.columns_ids.index('written')], \
identity
......@@ -485,7 +485,7 @@ class IdentitiesService(QObject):
"""
Get the list of certifications received by a given identity
:param str pubkey: the pubkey
:rtype: List[sakia.data.entities.Certifications]
:rtype: list[Certification]
"""
return self._certs_processor.certifications_received(self.currency, pubkey)
......@@ -493,6 +493,6 @@ class IdentitiesService(QObject):
"""
Get the list of certifications received by a given identity
:param str pubkey: the pubkey
:rtype: List[sakia.data.entities.Certifications]
:rtype: list[Certification]
"""
return self._certs_processor.certifications_sent(self.currency, pubkey)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment