Index: core/files/move.py =================================================================== --- core/files/move.py (revision 8295) +++ core/files/move.py (working copy) @@ -1,12 +1,13 @@ """ Move a file in the safest way possible:: - >>> from django.core.files.move import file_move_save - >>> file_move_save("/tmp/old_file", "/tmp/new_file") + >>> from django.core.files.move import file_move_safe + >>> file_move_safe("/tmp/old_file", "/tmp/new_file") """ import os from django.core.files import locks +from django.core.files.locks import system_type __all__ = ['file_move_safe'] @@ -16,6 +17,16 @@ except ImportError: file_move = os.rename +if system_type == 'nt' : + def _remove( file_name ) : + from exceptions import WindowsError + try: + return os.remove(file_name) + except: + pass # Since file_name is the name of a NamedTemporaryFile which is still open +else : + _remove = os.remove + def file_move_safe(old_file_name, new_file_name, chunk_size = 1024*64, allow_overwrite=False): """ Moves a file from one location to another in the safest way possible. @@ -53,7 +64,8 @@ current_chunk = old_file.read(chunk_size) new_file.write(current_chunk) + locks.unlock(new_file) new_file.close() old_file.close() - - os.remove(old_file_name) + + _remove( old_file_name )