diff --git a/src/sakia/data/graphs/base_graph.py b/src/sakia/data/graphs/base_graph.py index a9e4a401fab6cf0eb4ca475a1b2e4a4ec342b82c..602d72e0aae712e6181a681ae4aad6168fb57063 100644 --- a/src/sakia/data/graphs/base_graph.py +++ b/src/sakia/data/graphs/base_graph.py @@ -115,13 +115,14 @@ class BaseGraph(QObject): arc_status = self.arc_status(certification.timestamp) sig_validity = self.blockchain_service.parameters().sig_validity + expiration = self.blockchain_service.adjusted_ts(certification.timestamp + sig_validity) arc = { 'status': arc_status, 'tooltip': QLocale.toString( QLocale(), - QDateTime.fromTime_t(certification.timestamp + sig_validity).date(), + QDateTime.fromTime_t(expiration).date(), QLocale.dateFormat(QLocale(), QLocale.ShortFormat) - ), + ) + " BAT", 'cert_time': certification.timestamp, 'confirmation_text': self.confirmation_text(certification.written_on) } @@ -140,13 +141,14 @@ class BaseGraph(QObject): arc_status = self.arc_status(certification.timestamp) sig_validity = self.blockchain_service.parameters().sig_validity + expiration = self.blockchain_service.adjusted_ts(certification.timestamp + sig_validity) arc = { 'status': arc_status, 'tooltip': QLocale.toString( QLocale(), - QDateTime.fromTime_t(certification.timestamp + sig_validity).date(), + QDateTime.fromTime_t(expiration).date(), QLocale.dateFormat(QLocale(), QLocale.ShortFormat) - ), + ) + " BAT", 'cert_time': certification.timestamp, 'confirmation_text': self.confirmation_text(certification.written_on) } diff --git a/src/sakia/gui/main_window/status_bar/controller.py b/src/sakia/gui/main_window/status_bar/controller.py index e438150172eb9927728b01faf8ca5c455ee47b83..8500b1a88513358a8f68b5cebd3f434dc7e5104d 100644 --- a/src/sakia/gui/main_window/status_bar/controller.py +++ b/src/sakia/gui/main_window/status_bar/controller.py @@ -61,7 +61,7 @@ class StatusBarController(QObject): QDateTime.fromTime_t(current_time), QLocale.dateTimeFormat(QLocale(), QLocale.NarrowFormat) ) - self.view.status_label.setText(self.tr("Blockchain sync : {0} ({1})").format(str_time, str(current_block)[:15])) + self.view.status_label.setText(self.tr("Blockchain sync : {0} BAT ({1})").format(str_time, str(current_block)[:15])) def refresh(self): """ diff --git a/src/sakia/gui/main_window/toolbar/view.py b/src/sakia/gui/main_window/toolbar/view.py index ce9ebdad98719b1f44806055a131cf87dbbf9314..361d514cacd6e889ceb86a32bab094140d7886f7 100644 --- a/src/sakia/gui/main_window/toolbar/view.py +++ b/src/sakia/gui/main_window/toolbar/view.py @@ -186,11 +186,11 @@ class ToolbarView(QFrame, Ui_SakiaToolbar): self.tr('Actual growth c = UD(t)/[M(t-1)/N(t)]'), localized_data.get('ud_median_time_minus_1', '####'), self.tr('Penultimate UD date and time (t-1)'), - localized_data.get('ud_median_time', '####'), + localized_data.get('ud_median_time', '####') + " BAT", self.tr('Last UD date and time (t)'), - localized_data.get('next_ud_median_time', '####'), + localized_data.get('next_ud_median_time', '####') + " BAT", self.tr('Next UD date and time (t+1)'), - localized_data.get('next_ud_reeaval', '####'), + localized_data.get('next_ud_reeaval', '####') + " BAT", self.tr('Next UD reevaluation (t+1)') ) diff --git a/src/sakia/gui/navigation/controller.py b/src/sakia/gui/navigation/controller.py index 0d4b3ba7bc4a208d65facdb13478201e2bcec965..925dc9f10108e36734ec31864f1fe3fc3a3bbc97 100644 --- a/src/sakia/gui/navigation/controller.py +++ b/src/sakia/gui/navigation/controller.py @@ -135,47 +135,48 @@ class NavigationController(QObject): mapped = self.view.splitter.mapFromParent(point) index = self.view.tree_view.indexAt(mapped) raw_data = self.view.tree_view.model().data(index, GenericTreeModel.ROLE_RAW_DATA) - menu = QMenu(self.view) - if raw_data['misc']['connection'].uid: - action_view_in_wot = QAction(self.tr("View in Web of Trust"), menu) - menu.addAction(action_view_in_wot) - action_view_in_wot.triggered.connect(lambda c: - self.model.view_in_wot(raw_data['misc']['connection'])) - - action_gen_revokation = QAction(self.tr("Save revokation document"), menu) - menu.addAction(action_gen_revokation) - action_gen_revokation.triggered.connect(lambda c: - self.action_save_revokation(raw_data['misc']['connection'])) - - action_publish_uid = QAction(self.tr("Publish UID"), menu) - menu.addAction(action_publish_uid) - action_publish_uid.triggered.connect(lambda c: - self.publish_uid(raw_data['misc']['connection'])) - identity_published = self.model.identity_published(raw_data['misc']['connection']) - action_publish_uid.setEnabled(not identity_published) - - action_export_identity = QAction(self.tr("Export identity document"), menu) - menu.addAction(action_export_identity) - action_export_identity.triggered.connect(lambda c: - self.export_identity_document(raw_data['misc']['connection'])) - - action_leave = QAction(self.tr("Leave the currency"), menu) - menu.addAction(action_leave) - action_leave.triggered.connect(lambda c: self.send_leave(raw_data['misc']['connection'])) - action_leave.setEnabled(self.model.identity_is_member(raw_data['misc']['connection'])) - - copy_pubkey = QAction(menu.tr("Copy pubkey to clipboard"), menu.parent()) - copy_pubkey.triggered.connect(lambda checked, - c=raw_data['misc']['connection']: \ - NavigationModel.copy_pubkey_to_clipboard(c)) - menu.addAction(copy_pubkey) - - action_remove = QAction(self.tr("Remove the connection"), menu) - menu.addAction(action_remove) - action_remove.triggered.connect(lambda c: self.remove_connection(raw_data['misc']['connection'])) - # Show the context menu. - - menu.popup(QCursor.pos()) + if raw_data: + menu = QMenu(self.view) + if raw_data['misc']['connection'].uid: + action_view_in_wot = QAction(self.tr("View in Web of Trust"), menu) + menu.addAction(action_view_in_wot) + action_view_in_wot.triggered.connect(lambda c: + self.model.view_in_wot(raw_data['misc']['connection'])) + + action_gen_revokation = QAction(self.tr("Save revokation document"), menu) + menu.addAction(action_gen_revokation) + action_gen_revokation.triggered.connect(lambda c: + self.action_save_revokation(raw_data['misc']['connection'])) + + action_publish_uid = QAction(self.tr("Publish UID"), menu) + menu.addAction(action_publish_uid) + action_publish_uid.triggered.connect(lambda c: + self.publish_uid(raw_data['misc']['connection'])) + identity_published = self.model.identity_published(raw_data['misc']['connection']) + action_publish_uid.setEnabled(not identity_published) + + action_export_identity = QAction(self.tr("Export identity document"), menu) + menu.addAction(action_export_identity) + action_export_identity.triggered.connect(lambda c: + self.export_identity_document(raw_data['misc']['connection'])) + + action_leave = QAction(self.tr("Leave the currency"), menu) + menu.addAction(action_leave) + action_leave.triggered.connect(lambda c: self.send_leave(raw_data['misc']['connection'])) + action_leave.setEnabled(self.model.identity_is_member(raw_data['misc']['connection'])) + + copy_pubkey = QAction(menu.tr("Copy pubkey to clipboard"), menu.parent()) + copy_pubkey.triggered.connect(lambda checked, + c=raw_data['misc']['connection']: \ + NavigationModel.copy_pubkey_to_clipboard(c)) + menu.addAction(copy_pubkey) + + action_remove = QAction(self.tr("Remove the connection"), menu) + menu.addAction(action_remove) + action_remove.triggered.connect(lambda c: self.remove_connection(raw_data['misc']['connection'])) + # Show the context menu. + + menu.popup(QCursor.pos()) @asyncify async def publish_uid(self, connection): diff --git a/src/sakia/gui/navigation/identities/table_model.py b/src/sakia/gui/navigation/identities/table_model.py index c3aa5991ee9dc353b56351fb046dea1a1e1d46e9..9aea3a8deef26b609a23474965e4abb2724f7885 100644 --- a/src/sakia/gui/navigation/identities/table_model.py +++ b/src/sakia/gui/navigation/identities/table_model.py @@ -63,7 +63,7 @@ class IdentitiesFilterProxyModel(QSortFilterProxyModel): QLocale(), QDateTime.fromTime_t(ts).date(), QLocale.dateFormat(QLocale(), QLocale.ShortFormat) - ) + ) + " BAT" else: return "" if source_index.column() == IdentitiesTableModel.columns_ids.index('publication'): @@ -73,7 +73,7 @@ class IdentitiesFilterProxyModel(QSortFilterProxyModel): QLocale(), QDateTime.fromTime_t(ts), QLocale.dateTimeFormat(QLocale(), QLocale.LongFormat) - ) + ) + " BAT" else: return "" if source_index.column() == IdentitiesTableModel.columns_ids.index('pubkey'): diff --git a/src/sakia/gui/navigation/identity/table_model.py b/src/sakia/gui/navigation/identity/table_model.py index ace96e29838a46c0a9694c1679673f7e9303d1fa..63a8e81cf04cefcaaedc29c90896147752e86c4e 100644 --- a/src/sakia/gui/navigation/identity/table_model.py +++ b/src/sakia/gui/navigation/identity/table_model.py @@ -53,7 +53,7 @@ class CertifiersFilterProxyModel(QSortFilterProxyModel): QLocale(), QDateTime.fromTime_t(ts), QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat) - ) + ) + " BAT" else: return "" if source_index.column() == CertifiersTableModel.columns_ids.index('publication'): @@ -63,7 +63,7 @@ class CertifiersFilterProxyModel(QSortFilterProxyModel): QLocale(), QDateTime.fromTime_t(ts), QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat) - ) + ) + " BAT" else: return "" if source_index.column() == CertifiersTableModel.columns_ids.index('pubkey'): diff --git a/src/sakia/gui/navigation/identity/view.py b/src/sakia/gui/navigation/identity/view.py index 40edf46c1ac566bd4b4eb1961d368cb082bb200a..3dd0c6d09df24b9fe6c526baacaebbc67c1d1102 100644 --- a/src/sakia/gui/navigation/identity/view.py +++ b/src/sakia/gui/navigation/identity/view.py @@ -63,7 +63,7 @@ class IdentityView(QWidget, Ui_IdentityWidget): QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat) ) written_value = self.tr("Identity not written in blockchain") + \ - " (" + self.tr("Expires on : {0}").format(expiration_text) + ")" + " (" + self.tr("Expires on : {0}").format(expiration_text) + " BAT)" status_value = self.tr("Member") if data['membership_state'] else self.tr("Non-Member") if data['mstime'] > 0: diff --git a/src/sakia/gui/navigation/network/table_model.py b/src/sakia/gui/navigation/network/table_model.py index 77c3c2a4143ed89e1855531dcb1979b8a83d98d9..15caba8127cffac326908d9c955213c1478adabc 100644 --- a/src/sakia/gui/navigation/network/table_model.py +++ b/src/sakia/gui/navigation/network/table_model.py @@ -67,7 +67,9 @@ class NetworkFilterProxyModel(QSortFilterProxyModel): if role == Qt.DisplayRole: if index.column() == NetworkTableModel.columns_types.index('is_member'): - value = {True: QT_TRANSLATE_NOOP("NetworkTableModel", 'yes'), False: QT_TRANSLATE_NOOP("NetworkTableModel", 'no'), None: QT_TRANSLATE_NOOP("NetworkTableModel", 'offline')} + value = {True: QT_TRANSLATE_NOOP("NetworkTableModel", 'yes'), + False: QT_TRANSLATE_NOOP("NetworkTableModel", 'no'), + None: QT_TRANSLATE_NOOP("NetworkTableModel", 'offline')} return value[source_data] if index.column() == NetworkTableModel.columns_types.index('pubkey'): @@ -92,7 +94,7 @@ class NetworkFilterProxyModel(QSortFilterProxyModel): QLocale(), QDateTime.fromTime_t(ts), QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat) - ) + ) + " BAT" if role == Qt.TextAlignmentRole: if source_index.column() == NetworkTableModel.columns_types.index('address') or source_index.column() == self.sourceModel().columns_types.index('current_block'): diff --git a/src/sakia/gui/navigation/txhistory/table_model.py b/src/sakia/gui/navigation/txhistory/table_model.py index a50b238162ee31123cac826b7bf317830f67eab1..562ce339eb5a1ea1e6e82ef570af557135d99381 100644 --- a/src/sakia/gui/navigation/txhistory/table_model.py +++ b/src/sakia/gui/navigation/txhistory/table_model.py @@ -101,7 +101,7 @@ class TxFilterProxyModel(QSortFilterProxyModel): QLocale(), QDateTime.fromTime_t(ts).date(), QLocale.dateFormat(QLocale(), QLocale.ShortFormat) - ) + ) + " BAT" if source_index.column() == model.columns_types.index('amount'): amount = self.app.current_ref.instance(source_data, model.connection.currency, self.app, block_data).diff_localized(False, False) diff --git a/src/sakia/gui/sub/user_information/view.py b/src/sakia/gui/sub/user_information/view.py index c6d1acdc72545d3ed8ea278abbe57464d05e5efd..e9ff2a22d7747ebe0c3608df34d1999ea5dedbed 100644 --- a/src/sakia/gui/sub/user_information/view.py +++ b/src/sakia/gui/sub/user_information/view.py @@ -61,8 +61,8 @@ class UserInformationView(QWidget, Ui_UserInformationWidget): text = self.tr(""" <table cellpadding="5"> <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> - <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> - <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> + <tr><td align="right"><b>{:}</b></td><td>{:} BAT</td></tr> + <tr><td align="right"><b>{:}</b></td><td>{:} BAT</td></tr> <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> """).format( diff --git a/src/sakia/services/blockchain.py b/src/sakia/services/blockchain.py index 639160ba674655f57e8caacbfffff186ae1c76c9..8f0720a94e257bb422ff5c56ab36bf56becfd224 100644 --- a/src/sakia/services/blockchain.py +++ b/src/sakia/services/blockchain.py @@ -126,6 +126,9 @@ class BlockchainService(QObject): def previous_ud(self): return self._blockchain_processor.previous_ud(self.currency) + def adjusted_ts(self, time): + return self._blockchain_processor.adjusted_ts(self.currency, time) + def next_ud_reeval(self): parameters = self._blockchain_processor.parameters(self.currency) mediantime = self._blockchain_processor.time(self.currency)