From 5490f3348e434e63d14304b3067eba798022a9f4 Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Mon, 9 Feb 2015 21:28:28 +0100
Subject: [PATCH] Warning when account is near expiration

---
 src/cutecoin/core/transfer.py    |  2 +-
 src/cutecoin/core/wallet.py      |  4 ++--
 src/cutecoin/gui/currency_tab.py | 19 ++++++++++++++++---
 src/cutecoin/gui/wot_tab.py      |  4 ++--
 src/cutecoin/models/members.py   |  2 +-
 5 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/src/cutecoin/core/transfer.py b/src/cutecoin/core/transfer.py
index edbb5053..4960298e 100644
--- a/src/cutecoin/core/transfer.py
+++ b/src/cutecoin/core/transfer.py
@@ -69,7 +69,7 @@ class Transfer(object):
             raise
         finally:
             self.metadata['block'] = community.current_blockid()['number']
-            self.metadata['time'] = community.get_block().time
+            self.metadata['time'] = community.get_block().mediantime
 
     def check_registered(self, tx, metadata):
 
diff --git a/src/cutecoin/core/wallet.py b/src/cutecoin/core/wallet.py
index 8c089e86..c3dc6b63 100644
--- a/src/cutecoin/core/wallet.py
+++ b/src/cutecoin/core/wallet.py
@@ -89,7 +89,7 @@ class Cache():
                     logging.debug("Error in {0}".format(block_number))
                     raise
                 metadata = {'block': block_number,
-                            'time': block_doc.time}
+                            'time': block_doc.mediantime}
                 for tx in block_doc.transactions:
                     metadata['issuer'] = tx.issuers[0]
                     receivers = [o.pubkey for o in tx.outputs
@@ -243,7 +243,7 @@ class Wallet(object):
     def send_money(self, salt, password, community,
                    recipient, amount, message):
 
-        time = community.get_block().time
+        time = community.get_block().mediantime
         block_number = community.current_blockid()['number']
         key = None
         logging.debug("Key : {0} : {1}".format(salt, password))
diff --git a/src/cutecoin/gui/currency_tab.py b/src/cutecoin/gui/currency_tab.py
index 36333482..c0796955 100644
--- a/src/cutecoin/gui/currency_tab.py
+++ b/src/cutecoin/gui/currency_tab.py
@@ -99,7 +99,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
             self.tabs_account.setEnabled(True)
             self.refresh_wallets()
             blockchain_init = QDateTime()
-            blockchain_init.setTime_t(self.community.get_block(1).time)
+            blockchain_init.setTime_t(self.community.get_block(1).mediantime)
 
             self.date_from.setMinimumDateTime(blockchain_init)
             self.date_from.setDateTime(blockchain_init)
@@ -170,8 +170,21 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
                                                            QModelIndex(),
                                                            [])
 
-        self.status_label.setText("Connected : Block {0}"
-                                             .format(block_number))
+        person = Person.lookup(self.account.pubkey, self.community)
+        join_block = person.membership(self.community).block_number
+        join_date = self.community.get_block(join_block).mediantime
+        parameters = self.community.get_parameters()
+        expiration_date = join_date + parameters['sigValidity']
+        current_time = QDateTime().currentDateTime()
+        sig_validity = self.community.get_parameters()['sigValidity']
+        warning_expiration_time = int(sig_validity / 3)
+        will_expire_soon = (current_time > expiration_date*1000 - warning_expiration_time*1000)
+
+        text = "Connected : Block {0}".format(block_number)
+        if will_expire_soon:
+            days = QDateTime().currentDateTime().daysTo(QDateTime(expiration_date*1000))
+            text += " - Warning : Membership expiration in {0}".format(days)
+        self.status_label.setText(text)
 
     def refresh_wallets(self):
         if self.app.current_account:
diff --git a/src/cutecoin/gui/wot_tab.py b/src/cutecoin/gui/wot_tab.py
index 73e04924..30d5bab3 100644
--- a/src/cutecoin/gui/wot_tab.py
+++ b/src/cutecoin/gui/wot_tab.py
@@ -213,7 +213,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
                         'status': node_status
                     }
 
-                cert_time = self.get_block_median_time(certifier['meta']['block_number'])
+                cert_time = self.get_block_mediantime(certifier['meta']['block_number'])
 
                 # add only valid certification...
                 if (time.time() - cert_time) > self.signature_validity:
@@ -367,7 +367,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         dialog.edit_pubkey.setText(metadata['id'])
         dialog.exec_()
 
-    def get_block_median_time(self, number):
+    def get_block_mediantime(self, number):
         try:
             block = self.community.get_block(number)
         except Exception as e:
diff --git a/src/cutecoin/models/members.py b/src/cutecoin/models/members.py
index acf3e78b..68787bb5 100644
--- a/src/cutecoin/models/members.py
+++ b/src/cutecoin/models/members.py
@@ -87,7 +87,7 @@ class MembersTableModel(QAbstractTableModel):
     def member_data(self, pubkey):
         person = Person.lookup(pubkey, self.community)
         join_block = person.membership(self.community).block_number
-        join_date = self.community.get_block(join_block).time
+        join_date = self.community.get_block(join_block).mediantime
         parameters = self.community.get_parameters()
         expiration_date = join_date + parameters['sigValidity']
         return (person.name, pubkey, join_date, expiration_date)
-- 
GitLab