diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index 2c887b94..262d89b3 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -305,6 +305,18 @@ class Activity(Window, gtk.Container): def _internal_jobject_error_cb(self, err): logging.debug("Error creating activity datastore object: %s" % err) + def get_activity_root(self): + """ + Return the appropriate location in the fs where to store activity related + data that doesn't pertain to the current execution of the activity and + thus cannot go into the DataStore. + """ + if os.environ.has_key('SUGAR_ACTIVITY_ROOT') and \ + os.environ['SUGAR_ACTIVITY_ROOT']: + return os.environ['SUGAR_ACTIVITY_ROOT'] + else: + return '/' + def read_file(self, file_path): """ Subclasses implement this method if they support resuming objects from diff --git a/sugar/activity/activityfactoryservice.py b/sugar/activity/activityfactoryservice.py index 8b1397f1..63265a13 100644 --- a/sugar/activity/activityfactoryservice.py +++ b/sugar/activity/activityfactoryservice.py @@ -30,6 +30,7 @@ from sugar.activity.bundle import Bundle from sugar.activity import activityhandle from sugar import logger from sugar import _sugarext +from sugar import env # Work around for dbus mutex locking issue gobject.threads_init() @@ -156,6 +157,7 @@ def run(bundle_path): gtk.icon_theme_get_default().append_search_path(bundle.get_icons_path()) os.environ['SUGAR_BUNDLE_PATH'] = bundle_path + os.environ['SUGAR_ACTIVITY_ROOT'] = env.get_profile_path(bundle.get_service_name()) _sugarext.set_prgname(bundle.get_service_name()) _sugarext.set_application_name(bundle.get_name())