Ticket #8203: patch.txt

File patch.txt, 1.4 KB (added by Jeethu Rao <jeethu@…>, 16 years ago)
Line 
1Index: core/files/move.py
2===================================================================
3--- core/files/move.py (revision 8295)
4+++ core/files/move.py (working copy)
5@@ -1,12 +1,13 @@
6 """
7 Move a file in the safest way possible::
8
9- >>> from django.core.files.move import file_move_save
10- >>> file_move_save("/tmp/old_file", "/tmp/new_file")
11+ >>> from django.core.files.move import file_move_safe
12+ >>> file_move_safe("/tmp/old_file", "/tmp/new_file")
13 """
14
15 import os
16 from django.core.files import locks
17+from django.core.files.locks import system_type
18
19 __all__ = ['file_move_safe']
20
21@@ -16,6 +17,16 @@
22 except ImportError:
23 file_move = os.rename
24
25+if system_type == 'nt' :
26+ def _remove( file_name ) :
27+ from exceptions import WindowsError
28+ try:
29+ return os.remove(file_name)
30+ except:
31+ pass # Since file_name is the name of a NamedTemporaryFile which is still open
32+else :
33+ _remove = os.remove
34+
35 def file_move_safe(old_file_name, new_file_name, chunk_size = 1024*64, allow_overwrite=False):
36 """
37 Moves a file from one location to another in the safest way possible.
38@@ -53,7 +64,8 @@
39 current_chunk = old_file.read(chunk_size)
40 new_file.write(current_chunk)
41
42+ locks.unlock(new_file)
43 new_file.close()
44 old_file.close()
45-
46- os.remove(old_file_name)
47+
48+ _remove( old_file_name )
Back to Top