[Dextrose] [PATCH 52/54] sl#2713: Add last updated on field to CP/About my computer
Anish Mangal
anish at sugarlabs.org
Tue Nov 8 12:49:50 EST 2011
Signed-off-by: Anish Mangal <anish at sugarlabs.org>
---
extensions/cpsection/aboutcomputer/model.py | 60 ++++++++++++++++++++++++++-
extensions/cpsection/aboutcomputer/view.py | 22 ++++++++++
2 files changed, 81 insertions(+), 1 deletions(-)
diff --git a/extensions/cpsection/aboutcomputer/model.py b/extensions/cpsection/aboutcomputer/model.py
index 52a1094..753055d 100644
--- a/extensions/cpsection/aboutcomputer/model.py
+++ b/extensions/cpsection/aboutcomputer/model.py
@@ -27,7 +27,6 @@ import dbus
from jarabe import config
-
_NM_SERVICE = 'org.freedesktop.NetworkManager'
_NM_PATH = '/org/freedesktop/NetworkManager'
_NM_IFACE = 'org.freedesktop.NetworkManager'
@@ -254,3 +253,62 @@ def get_license():
except IOError:
license_text = _not_available
return license_text
+
+def get_last_updated_on_field():
+
+ # Get the number of UNIX seconds of the last update date.
+ last_update_unix_seconds = {}
+ try:
+ SERVICE_NAME = 'org.sugarlabs.client.System'
+ SERVICE_PATH = '/org/sugarlabs/client/System'
+ SERVICE_INTERFACE = 'org.sugarlabs.client.System'
+
+ bus_class = dbus.SystemBus()
+ system_obj = bus_class.get_object(SERVICE_NAME, SERVICE_PATH)
+ system_iface = dbus.Interface(system_obj, SERVICE_INTERFACE)
+ system_props = dbus.Interface(system_iface,
+ dbus.PROPERTIES_IFACE)
+ last_update_unix_seconds = system_props.Get(SERVICE_INTERFACE,
+ 'LastUpdate')
+ except:
+ msg_str = ('There was some error fetching the last-update-time'
+ '\nfrom sugar-server. Please contact Support.')
+ _logger.exception(msg_str)
+ return _(msg_str)
+
+ # Check once agin that 'last_update_unix_seconds' is not empty.
+ # You never know !
+ if not last_update_unix_seconds:
+ return _('No update yet!')
+
+ # If we reached here, we have the last-update-time, but it's in
+ # timestamp format.
+ # Using python-subprocess-module (no shell involved), to convert
+ # it into readable date-format; the hack being used (after
+ # removing '-u' option) is the first one mentioned at :
+ # http://www.commandlinefu.com/commands/view/3719/convert-unix-timestamp-to-date
+ environment = os.environ.copy()
+ environment['PATH'] = '%s:/usr/sbin' % (environment['PATH'], )
+
+ last_update_readable_format = {}
+ try:
+ last_update_readable_format = \
+ subprocess.Popen(['date', '-d',
+ '1970-01-01 + ' +
+ str(last_update_unix_seconds) +
+ ' seconds'],
+ stdout=subprocess.PIPE,
+ env=environment).stdout.readlines()[0]
+ except:
+ msg_str = ('There was some error in the processing of'
+ '\nlast-update-time. Please contact Support.')
+ _logger.exception(msg_str)
+ return _(msg_str)
+
+ if not last_update_readable_format:
+ return _('There was some error in the processing of\n'
+ 'last-update-time. Please contact Support.')
+
+ # Everything should be fine (hopefully :-) )
+ return last_update_readable_format
+
diff --git a/extensions/cpsection/aboutcomputer/view.py b/extensions/cpsection/aboutcomputer/view.py
index d719372..dd2f200 100644
--- a/extensions/cpsection/aboutcomputer/view.py
+++ b/extensions/cpsection/aboutcomputer/view.py
@@ -171,6 +171,28 @@ class AboutComputer(SectionView):
box_software.pack_start(box_wireless_fw, expand=False)
box_wireless_fw.show()
+ # Try to fetch "Last Updated On" field from the model.
+ # If the field is not empty, display it.
+ # At present, the field is returned empty, only if "root-access"
+ # is disabled on the target-machine.
+ last_updated_on_field = self._model.get_last_updated_on_field()
+ if last_updated_on_field:
+ box_last_updated_on = gtk.HBox(spacing=style.DEFAULT_SPACING)
+ label_last_updated_on = gtk.Label(_('Last Updated On:'))
+ label_last_updated_on.set_alignment(1, 0)
+ label_last_updated_on.modify_fg(gtk.STATE_NORMAL,
+ style.COLOR_SELECTION_GREY.get_gdk_color())
+ box_last_updated_on.pack_start(label_last_updated_on, expand=False)
+ self._group.add_widget(label_last_updated_on)
+ label_last_updated_on.show()
+ label_last_updated_on_field = \
+ gtk.Label(last_updated_on_field)
+ label_last_updated_on_field.set_alignment(0, 0)
+ box_last_updated_on.pack_start(label_last_updated_on_field, expand=False)
+ label_last_updated_on_field.show()
+ box_software.pack_start(box_last_updated_on, expand=False)
+ box_last_updated_on.show()
+
self._vbox.pack_start(box_software, expand=False)
box_software.show()
--
1.7.4.4
More information about the Dextrose
mailing list