Django

Code

Changeset 8217

Show
Ignore:
Timestamp:
08/05/08 12:43:05 (4 months ago)
Author:
jacob
Message:

Fixed #7683: Try not to delete uploaded files before moving them, and don't wig out of someone else does. Patch from screeley and spaetz.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/files/uploadedfile.py

    r8096 r8217  
    203203    def seek(self, offset):         return self._file.seek(offset) 
    204204    def write(self, s):             return self._file.write(s) 
    205     def close(self):                return self._file.close() 
    206205    def __iter__(self):             return iter(self._file) 
    207206    def readlines(self, size=None): return self._file.readlines(size) 
    208207    def xreadlines(self):           return self._file.xreadlines() 
    209  
     208    def close(self): 
     209        try: 
     210            return self._file.close() 
     211        except OSError, e: 
     212            if e.errno == 2: 
     213                # Means the file was moved or deleted before the tempfile could unlink it. 
     214                # Still sets self._file.close_called and calls self._file.file.close() 
     215                # before the exception 
     216                return 
     217            else:  
     218                raise e 
     219         
    210220class InMemoryUploadedFile(UploadedFile): 
    211221    """ 
  • django/trunk/django/db/models/base.py

    r8185 r8217  
    530530        if hasattr(raw_field, 'temporary_file_path'): 
    531531            # This file has a file path that we can move. 
     532            file_move_safe(raw_field.temporary_file_path(), full_filename) 
    532533            raw_field.close() 
    533             file_move_safe(raw_field.temporary_file_path(), full_filename) 
    534534        else: 
    535535            # This is a normal uploadedfile that we can stream.