diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2009-08-28 11:37:35 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2009-08-28 11:37:35 (GMT) |
commit | 5b6061946af68b03e00de0fd6617c5c8ceb56715 (patch) | |
tree | 0003866463c1bfc3657da9d327873dcc9584fe6c /src | |
parent | 505b05d183fc478181a85480fb539e804f4cac3b (diff) |
Let user upgrade system activity from .xo #701
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/desktop/activitieslist.py | 9 | ||||
-rw-r--r-- | 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/src/jarabe/desktop/activitieslist.py +++ b/src/jarabe/desktop/activitieslist.py @@ -403,10 +403,11 @@ class ActivityListPalette(ActivityPalette): self.menu.append(self._favorite_item) self._favorite_item.show() - menu_item = MenuItem(_('Erase'), 'list-remove') - menu_item.connect('activate', self.__erase_activate_cb) - self.menu.append(menu_item) - menu_item.show() + if activity_info.is_user_activity(): + menu_item = MenuItem(_('Erase'), 'list-remove') + menu_item.connect('activate', self.__erase_activate_cb) + self.menu.append(menu_item) + menu_item.show() if not os.access(activity_info.get_path(), os.W_OK): menu_item.props.sensitive = False diff --git a/src/jarabe/model/bundleregistry.py b/src/jarabe/model/bundleregistry.py index 1d23f0c..b754952 100644 --- a/src/jarabe/model/bundleregistry.py +++ b/src/jarabe/model/bundleregistry.py @@ -219,8 +219,17 @@ class BundleRegistry(gobject.GObject): logging.exception('Error loading bundle %r', bundle_path) return None - if self.get_bundle(bundle.get_bundle_id()): - return None + bundle_id = bundle.get_bundle_id() + installed = self.get_bundle(bundle_id) + + if installed is not None: + if installed.get_activity_version() >= \ + bundle.get_activity_version(): + logging.debug('Skip old version for %s', bundle_id) + return None + else: + logging.debug('Upgrade %s', bundle_id) + self.remove_bundle(installed.get_path()) self._bundles.append(bundle) return bundle @@ -367,14 +376,15 @@ class BundleRegistry(gobject.GObject): act.get_activity_version() != bundle.get_activity_version(): logging.warning('Not uninstalling, different bundle present') return - elif not act.get_path().startswith(env.get_user_activities_path()): - logging.warning('Not uninstalling system activity') + + if not act.is_user_activity(): + logging.debug('Do not uninstall system activity') return install_path = act.get_path() bundle.uninstall(install_path, force) - + if not self.remove_bundle(install_path): raise RegistrationException @@ -385,7 +395,7 @@ class BundleRegistry(gobject.GObject): elif act.get_activity_version() == bundle.get_activity_version(): logging.debug('No upgrade needed, same version already installed.') return - elif act.get_path().startswith(env.get_user_activities_path()): + elif act.is_user_activity(): try: self.uninstall(bundle, force=True) except Exception: |