diff options
author | Sascha 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) |
commit | 816688e70110f25c860674c466bd9c66a3ebd6e4 (patch) | |
tree | a43f4674aa0c45911db39d2ded2e9ddff24f2c47 | |
parent | 397e72649fe1ef39d98e90e51c29dcdadb18b3ea (diff) |
fix temporary directory
-rw-r--r-- | restore.py | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -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) |