Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/rpms/sugar/0046-Add-lease-duration-information-in-about-my-computer.patch
blob: 36ce7a78707971fe95c85352474299bd2dff98f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
From 85297850f1791781aedcf33b170f5ae3d2d6e079 Mon Sep 17 00:00:00 2001
From: Anish Mangal <anish@sugarlabs.org>
Date: Thu, 20 Jan 2011 23:18:42 -0300
Subject: [PATCH sugar 46/74] Add lease duration information in about my
 computer

Signed-off-by: Anish Mangal <anish@sugarlabs.org>
---
 extensions/cpsection/aboutcomputer/model.py |   28 +++++++++++++++++++++++++++
 extensions/cpsection/aboutcomputer/view.py  |   15 ++++++++++++++
 2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/extensions/cpsection/aboutcomputer/model.py b/extensions/cpsection/aboutcomputer/model.py
index 431c9c0..52a1094 100644
--- a/extensions/cpsection/aboutcomputer/model.py
+++ b/extensions/cpsection/aboutcomputer/model.py
@@ -21,6 +21,7 @@
 import subprocess
 from gettext import gettext as _
 import errno
+from datetime import datetime
 
 import dbus
 
@@ -39,6 +40,9 @@
 _SN = 'serial-number'
 _MODEL = 'openprom/model'
 
+_XO_1_0_LEASE_PATH = '/security/lease.sig'
+_XO_1_5_LEASE_PATH = '/bootpart/boot/security/lease.sig'
+
 _logger = logging.getLogger('ControlPanel - AboutComputer')
 _not_available = _('Not available')
 
@@ -53,6 +57,30 @@ def print_aboutcomputer():
     print get_aboutcomputer()
 
 
+def _get_lease_path():
+    if os.path.exists(_XO_1_0_LEASE_PATH):
+        return _XO_1_0_LEASE_PATH
+    elif os.path.exists(_XO_1_5_LEASE_PATH):
+        return _XO_1_5_LEASE_PATH
+    else:
+        return ''
+
+
+def get_lease_days():
+    lease_file = _read_file(_get_lease_path())
+    if lease_file is None:
+        return _not_available
+
+    encoded_date = str(str.split(lease_file)[3])
+    expiry_date = datetime.strptime(encoded_date
+            , '%Y%m%dT%H%M%SZ')
+    current_date = datetime.today()
+    days_remaining = (expiry_date - current_date).days
+    #TODO: gettext str_days_remaining
+    str_days_remaining = str(days_remaining) + ' days remaining'
+    return str_days_remaining
+
+
 def get_serial_number():
     serial_no = None
     if os.path.exists(os.path.join(_OFW_TREE, _SN)):
diff --git a/extensions/cpsection/aboutcomputer/view.py b/extensions/cpsection/aboutcomputer/view.py
index 257e165..d719372 100644
--- a/extensions/cpsection/aboutcomputer/view.py
+++ b/extensions/cpsection/aboutcomputer/view.py
@@ -79,6 +79,21 @@ def _setup_identity(self):
         vbox_identity.pack_start(box_identity, expand=False)
         box_identity.show()
 
+        box_lease = gtk.HBox(spacing=style.DEFAULT_SPACING)
+        label_lease = gtk.Label(_('Lease: '))
+        label_lease.set_alignment(1, 0)
+        label_lease.modify_fg(gtk.STATE_NORMAL,
+                              style.COLOR_SELECTION_GREY.get_gdk_color())
+        box_lease.pack_start(label_lease, expand=False)
+        self._group.add_widget(label_lease)
+        label_lease.show()
+        label_lease_ver = gtk.Label(self._model.get_lease_days())
+        label_lease_ver.set_alignment(0, 0)
+        box_lease.pack_start(label_lease_ver, expand=False)
+        label_lease_ver.show()
+        vbox_identity.pack_start(box_lease, expand=False)
+        box_lease.show()
+
         self._vbox.pack_start(vbox_identity, expand=False)
         vbox_identity.show()
 
-- 
1.7.6