From f1ca0382b263254bbc4a701ae0b69f580e66d8d3 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Fri, 5 May 2017 09:00:39 +0200
Subject: [PATCH] Add BAT Units to times

---
 src/sakia/data/graphs/base_graph.py           | 10 ++-
 .../gui/main_window/status_bar/controller.py  |  2 +-
 src/sakia/gui/main_window/toolbar/view.py     |  6 +-
 src/sakia/gui/navigation/controller.py        | 83 ++++++++++---------
 .../gui/navigation/identities/table_model.py  |  4 +-
 .../gui/navigation/identity/table_model.py    |  4 +-
 src/sakia/gui/navigation/identity/view.py     |  2 +-
 .../gui/navigation/network/table_model.py     |  6 +-
 .../gui/navigation/txhistory/table_model.py   |  2 +-
 src/sakia/gui/sub/user_information/view.py    |  4 +-
 src/sakia/services/blockchain.py              |  3 +
 11 files changed, 67 insertions(+), 59 deletions(-)

diff --git a/src/sakia/data/graphs/base_graph.py b/src/sakia/data/graphs/base_graph.py
index a9e4a401..602d72e0 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 e4381501..8500b1a8 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 ce9ebdad..361d514c 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 0d4b3ba7..925dc9f1 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 c3aa5991..9aea3a8d 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 ace96e29..63a8e81c 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 40edf46c..3dd0c6d0 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 77c3c2a4..15caba81 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 a50b2381..562ce339 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 c6d1acdc..e9ff2a22 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 639160ba..8f0720a9 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)
-- 
GitLab