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
|