From 65c3fcd5a6a783a66e4a8fa133264fc4131b28e8 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Tue, 24 Jul 2007 09:10:02 +0000 Subject: #2364: Fix uploads and clean up correctly the temp files. --- (limited to 'filepicker.py') diff --git a/filepicker.py b/filepicker.py index 61e0abd..5b24c7c 100644 --- a/filepicker.py +++ b/filepicker.py @@ -15,6 +15,9 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging +import os +import tempfile +import shutil import gtk @@ -25,6 +28,13 @@ from xpcom.server.factory import Factory from sugar.graphics.objectchooser import ObjectChooser +_temp_files_to_clean = [] + +def cleanup_temp_files(): + for temp_file in _temp_files_to_clean: + logging.debug('filepicker.cleanup_temp_files: %r' % temp_file) + os.remove(temp_file) + class FilePicker: _com_interfaces_ = interfaces.nsIFilePicker @@ -62,9 +72,18 @@ class FilePicker: try: result = chooser.run() if result == gtk.RESPONSE_ACCEPT: + logging.debug('FilePicker.show: %r' % chooser.get_selected_object()) jobject = chooser.get_selected_object() if jobject and jobject.file_path: - self._file = jobject.file_path + ext = os.path.splitext(jobject.file_path)[1] + f, new_temp = tempfile.mkstemp(ext) + del f + + global _temp_files_to_clean + _temp_files_to_clean.append(new_temp) + shutil.copy(jobject.file_path, new_temp) + + self._file = new_temp finally: chooser.destroy() del chooser @@ -103,6 +122,7 @@ class FilePicker: return None def get_file(self): + logging.debug('FilePicker.get_file: %r' % self._file) if self._file: cls = components.classes["@mozilla.org/file/local;1"] local_file = cls.createInstance(interfaces.nsILocalFile) -- cgit v0.9.1