Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2010-08-30 10:17:09 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2010-08-30 10:17:09 (GMT)
commit816688e70110f25c860674c466bd9c66a3ebd6e4 (patch)
treea43f4674aa0c45911db39d2ded2e9ddff24f2c47
parent397e72649fe1ef39d98e90e51c29dcdadb18b3ea (diff)
fix temporary directory
-rw-r--r--restore.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/restore.py b/restore.py
index 9b7f45d..92bfbd2 100644
--- a/restore.py
+++ b/restore.py
@@ -112,9 +112,10 @@ class AsyncRestore(gobject.GObject):
'error': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([str])),
}
- def __init__(self, path):
+ def __init__(self, bundle_path, tmp_dir):
gobject.GObject.__init__(self)
- self._path = path
+ self._path = bundle_path
+ self._tmp_dir = tmp_dir
self._bundle = None
self._child_pid = None
self._pipe_from_child = None
@@ -122,7 +123,6 @@ class AsyncRestore(gobject.GObject):
self._pipe_from_child_watch_id = None
self._data_store = None
-
def start(self):
"""Start the restore process."""
to_child_read_fd, to_child_write_fd = os.pipe()
@@ -311,8 +311,8 @@ class AsyncRestore(gobject.GObject):
def _read_data(self, object_id):
"""Read data for given object from bundle."""
- # TODO: verify this uses the activity data dir
- data_fd, data_file_name = tempfile.mkstemp(prefix='Restore')
+ data_fd, data_file_name = tempfile.mkstemp(prefix='Restore',
+ dir=self._tmp_dir)
data_file = os.fdopen(data_fd, 'w')
try:
# TODO: handle large files better (i.e. use external tool)
@@ -532,7 +532,12 @@ class RestoreActivity(activity.Activity):
def _start_restore(self):
"""Set up and start background worker process."""
- self._restore = AsyncRestore(self._path)
+ base_dir = os.environ.get('SUGAR_ACTIVITY_ROOT')
+ if not base_dir:
+ base_dir = sugar.env.get_profile_path(self.get_bundle_id())
+
+ tmp_dir = os.path.join(base_dir, 'instance')
+ self._restore = AsyncRestore(self._path, tmp_dir)
self._restore.connect('progress', self._progress_cb)
self._restore.connect('error', self._error_cb)
self._restore.connect('done', self._done_cb)