'/ofw' has been removed on the XOs now. We need to refine the check if the machine is an XO in order to display the information accordingly.
Follow up patch of b454c1253d95fc62c0cdf9ce34c40397a3c6f49e Signed-off-by: Simon Schampijer <si...@laptop.org> --- extensions/cpsection/aboutcomputer/model.py | 46 +++++++++++++++++++++++++++ extensions/cpsection/aboutcomputer/view.py | 4 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/extensions/cpsection/aboutcomputer/model.py b/extensions/cpsection/aboutcomputer/model.py index a02eee6..8cf3abb 100644 --- a/extensions/cpsection/aboutcomputer/model.py +++ b/extensions/cpsection/aboutcomputer/model.py @@ -41,6 +41,52 @@ _MODEL = 'openprom/model' _logger = logging.getLogger('ControlPanel - AboutComputer') _not_available = _('Not available') +XO_1 = '1' +XO_1_5 = '1.5' +XO_1_75 = '1.75' + + +def _get_xo_version(): + """Gets the version of the XO + + There has been three revisions of the XO hardware as + of today: 1, 1.5, 1.75 + + Returns: a string indicating the version of the XO or None if + the hardware is not an XO + + """ + xo_version = None + if os.path.exists('/proc/device-tree/banner-name'): + content = _read_file('/proc/device-tree/banner-name') + if re.match(r'OLPC\ [BC][0-9]', content): + xo_version = XO_1 + elif re.match(r'OLPC\ D[0-9]', content): + xo_version = XO_1_5 + elif re.match(r'OLPC\ 1[ABC][0-9]', content): + xo_version = XO_1_75 + elif os.path.exists('/sys/class/dmi/id/product_name'): + if _read_file('/sys/class/dmi/id/product_name') == 'XO' and \ + os.path.exists('/sys/class/dmi/id/product_version'): + content = _read_file('/sys/class/dmi/id/product_version') + if content == '1': + xo_version = XO_1 + elif content == '1.5': + xo_version = XO_1_5 + elif os.path.exists('/ofw/banner-name'): + content = _read_file('/ofw/banner-name') + if re.match(r'OLPC\ [BC][0-9]', content): + xo_version = XO_1 + return xo_version + + +def is_xo(): + """Checks if the underlying hardware is an XO + + Returns: True in the case the underlying hardware is an XO + """ + return _get_xo_version() is not None + def get_aboutcomputer(): msg = 'Serial Number: %s \nBuild Number: %s \nFirmware Number: %s \n' \ diff --git a/extensions/cpsection/aboutcomputer/view.py b/extensions/cpsection/aboutcomputer/view.py index e5f2f32..baddbe2 100644 --- a/extensions/cpsection/aboutcomputer/view.py +++ b/extensions/cpsection/aboutcomputer/view.py @@ -47,7 +47,7 @@ class AboutComputer(SectionView): scrollwindow.add_with_viewport(self._vbox) self._vbox.show() - if os.path.exists('/ofw'): + if self._model.is_xo(): self._setup_identity() self._setup_software() @@ -127,7 +127,7 @@ class AboutComputer(SectionView): box_software.pack_start(box_sugar, expand=False) box_sugar.show() - if os.path.exists('/ofw'): + if self._model.is_xo(): box_firmware = gtk.HBox(spacing=style.DEFAULT_SPACING) label_firmware = gtk.Label(_('Firmware:')) label_firmware.set_alignment(1, 0) -- 1.7.4.4 _______________________________________________ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel