Author: jacob
Date: 2008-08-27 16:18:45 -0500 (Wed, 27 Aug 2008)
New Revision: 8637

Modified:
   django/trunk/django/db/models/fields/files.py
   django/trunk/tests/regressiontests/file_storage/models.py
Log:
Fixed #8175: don't open files we're about to close. This was a pesky bug to 
track down; thanks to charmless for tracking it down.

Modified: django/trunk/django/db/models/fields/files.py
===================================================================
--- django/trunk/django/db/models/fields/files.py       2008-08-27 20:53:02 UTC 
(rev 8636)
+++ django/trunk/django/db/models/fields/files.py       2008-08-27 21:18:45 UTC 
(rev 8637)
@@ -78,7 +78,12 @@
     save.alters_data = True
 
     def delete(self, save=True):
-        self.close()
+        # Only close the file if it's already open, which we know by the
+        # presence of self._file
+        if hasattr(self, '_file'):
+            self.close()
+            del self._file
+            
         self.storage.delete(self.name)
 
         self._name = None

Modified: django/trunk/tests/regressiontests/file_storage/models.py
===================================================================
--- django/trunk/tests/regressiontests/file_storage/models.py   2008-08-27 
20:53:02 UTC (rev 8636)
+++ django/trunk/tests/regressiontests/file_storage/models.py   2008-08-27 
21:18:45 UTC (rev 8637)
@@ -40,5 +40,11 @@
 >>> p.mug_width
 16
 
+# Bug #8175: correctly delete files that have been removed off the file system.
+>>> import os
+>>> p2 = Person(name="Fred")
+>>> p2.mugshot.save("shot", ContentFile(image_data))
+>>> os.remove(p2.mugshot.path)
+>>> p2.delete()
 """}
     
\ No newline at end of file


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to