[1.6.x] Fixed #20660 -- Do not try to delete an unset FieldFile
Thanks stanislas.guerra at gmail.com for the report and
Baptiste Mispelon for the review.
Backport of ea3fe78a9d
from master.
This commit is contained in:
parent
c55cb6fa45
commit
b6aed803b2
|
@ -96,6 +96,8 @@ class FieldFile(File):
|
||||||
save.alters_data = True
|
save.alters_data = True
|
||||||
|
|
||||||
def delete(self, save=True):
|
def delete(self, save=True):
|
||||||
|
if not self:
|
||||||
|
return
|
||||||
# Only close the file if it's already open, which we know by the
|
# Only close the file if it's already open, which we know by the
|
||||||
# presence of self._file
|
# presence of self._file
|
||||||
if hasattr(self, '_file'):
|
if hasattr(self, '_file'):
|
||||||
|
|
|
@ -432,6 +432,17 @@ class FileFieldTests(unittest.TestCase):
|
||||||
field.save_form_data(d, 'else.txt')
|
field.save_form_data(d, 'else.txt')
|
||||||
self.assertEqual(d.myfile, 'else.txt')
|
self.assertEqual(d.myfile, 'else.txt')
|
||||||
|
|
||||||
|
def test_delete_when_file_unset(self):
|
||||||
|
"""
|
||||||
|
Calling delete on an unset FileField should not call the file deletion
|
||||||
|
process, but fail silently (#20660).
|
||||||
|
"""
|
||||||
|
d = Document()
|
||||||
|
try:
|
||||||
|
d.myfile.delete()
|
||||||
|
except OSError:
|
||||||
|
self.fail("Deleting an unset FileField should not raise OSError.")
|
||||||
|
|
||||||
|
|
||||||
class BinaryFieldTests(test.TestCase):
|
class BinaryFieldTests(test.TestCase):
|
||||||
binary_data = b'\x00\x46\xFE'
|
binary_data = b'\x00\x46\xFE'
|
||||||
|
|
Loading…
Reference in New Issue