Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAjay Garg <ajay@activitycentral.com>2012-10-16 08:14:46 (GMT)
committer Ajay Garg <ajay@activitycentral.com>2012-10-16 08:21:55 (GMT)
commitf41468507d1e814839c4a81dd001066bc2cf0a6b (patch)
tree15b6668b5967111dad3aca8832bb3d71fb45f2dd
parent7c81d174d91dacd6fb8d2966f7d82ad67fd86808 (diff)
Last-Updated field in "My Settings" -> "About My Computer".
Signed-off-by: Ajay Garg <ajay@activitycentral.com>
-rw-r--r--extensions/cpsection/aboutcomputer/model.py53
-rw-r--r--extensions/cpsection/aboutcomputer/view.py22
2 files changed, 75 insertions, 0 deletions
diff --git a/extensions/cpsection/aboutcomputer/model.py b/extensions/cpsection/aboutcomputer/model.py
index 86d2e3f..59bae00 100644
--- a/extensions/cpsection/aboutcomputer/model.py
+++ b/extensions/cpsection/aboutcomputer/model.py
@@ -226,3 +226,56 @@ 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:
+ last_update_unix_seconds = int(os.stat('/var/lib/rpm/Packages').st_mtime)
+ except:
+ msg_str = _('Information not available.')
+ _logger.exception(msg_str)
+ return msg_str
+
+
+ NO_UPDATE_MESSAGE = _('No update yet!')
+
+ # Check once again that 'last_update_unix_seconds' is not empty.
+ # You never know !
+ if not last_update_unix_seconds:
+ return NO_UPDATE_MESSAGE
+
+ if int(last_update_unix_seconds) == 1194004800:
+ return NO_UPDATE_MESSAGE
+
+
+ # 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 = _('Information not available.')
+ _logger.exception(msg_str)
+ return msg_str
+
+ if not last_update_readable_format:
+ return _('Information not available.')
+
+ # 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 f44ca51..ac0b531 100644
--- a/extensions/cpsection/aboutcomputer/view.py
+++ b/extensions/cpsection/aboutcomputer/view.py
@@ -157,6 +157,28 @@ class AboutComputer(SectionView):
box_software.pack_start(box_wireless_fw, False, True, 0)
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.StateType.NORMAL,
+ style.COLOR_SELECTION_GREY.get_gdk_color())
+ box_last_updated_on.pack_start(label_last_updated_on, False, True, 0)
+ 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, False, True, 0)
+ label_last_updated_on_field.show()
+ box_software.pack_start(box_last_updated_on, False, True, 0)
+ box_last_updated_on.show()
+
self._vbox.pack_start(box_software, False, True, 0)
box_software.show()