From 5b6061946af68b03e00de0fd6617c5c8ceb56715 Mon Sep 17 00:00:00 2001
From: Aleksey Lim <alsroot@member.fsf.org>
Date: Fri, 28 Aug 2009 11:37:35 +0000
Subject: Let user upgrade system activity from .xo #701
---
src/jarabe/desktop/activitieslist.py | 9 +++++----
src/jarabe/model/bundleregistry.py | 22 ++++++++++++++++------
2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py
index 8b35560..66e2870 100644
a
|
b
|
class ActivityListPalette(ActivityPalette): |
403 | 403 | self.menu.append(self._favorite_item) |
404 | 404 | self._favorite_item.show() |
405 | 405 | |
406 | | menu_item = MenuItem(_('Erase'), 'list-remove') |
407 | | menu_item.connect('activate', self.__erase_activate_cb) |
408 | | self.menu.append(menu_item) |
409 | | menu_item.show() |
| 406 | if activity_info.is_user_activity(): |
| 407 | menu_item = MenuItem(_('Erase'), 'list-remove') |
| 408 | menu_item.connect('activate', self.__erase_activate_cb) |
| 409 | self.menu.append(menu_item) |
| 410 | menu_item.show() |
410 | 411 | |
411 | 412 | if not os.access(activity_info.get_path(), os.W_OK): |
412 | 413 | menu_item.props.sensitive = False |
diff --git a/src/jarabe/model/bundleregistry.py b/src/jarabe/model/bundleregistry.py
index 1d23f0c..b754952 100644
a
|
b
|
class BundleRegistry(gobject.GObject): |
219 | 219 | logging.exception('Error loading bundle %r', bundle_path) |
220 | 220 | return None |
221 | 221 | |
222 | | if self.get_bundle(bundle.get_bundle_id()): |
223 | | return None |
| 222 | bundle_id = bundle.get_bundle_id() |
| 223 | installed = self.get_bundle(bundle_id) |
| 224 | |
| 225 | if installed is not None: |
| 226 | if installed.get_activity_version() >= \ |
| 227 | bundle.get_activity_version(): |
| 228 | logging.debug('Skip old version for %s', bundle_id) |
| 229 | return None |
| 230 | else: |
| 231 | logging.debug('Upgrade %s', bundle_id) |
| 232 | self.remove_bundle(installed.get_path()) |
224 | 233 | |
225 | 234 | self._bundles.append(bundle) |
226 | 235 | return bundle |
… |
… |
class BundleRegistry(gobject.GObject): |
367 | 376 | act.get_activity_version() != bundle.get_activity_version(): |
368 | 377 | logging.warning('Not uninstalling, different bundle present') |
369 | 378 | return |
370 | | elif not act.get_path().startswith(env.get_user_activities_path()): |
371 | | logging.warning('Not uninstalling system activity') |
| 379 | |
| 380 | if not act.is_user_activity(): |
| 381 | logging.debug('Do not uninstall system activity') |
372 | 382 | return |
373 | 383 | |
374 | 384 | install_path = act.get_path() |
375 | 385 | |
376 | 386 | bundle.uninstall(install_path, force) |
377 | | |
| 387 | |
378 | 388 | if not self.remove_bundle(install_path): |
379 | 389 | raise RegistrationException |
380 | 390 | |
… |
… |
class BundleRegistry(gobject.GObject): |
385 | 395 | elif act.get_activity_version() == bundle.get_activity_version(): |
386 | 396 | logging.debug('No upgrade needed, same version already installed.') |
387 | 397 | return |
388 | | elif act.get_path().startswith(env.get_user_activities_path()): |
| 398 | elif act.is_user_activity(): |
389 | 399 | try: |
390 | 400 | self.uninstall(bundle, force=True) |
391 | 401 | except Exception: |