mirror of
https://github.com/django/django.git
synced 2025-07-18 18:55:18 +00:00
Fixed #6456 - Excised FileField file deletion to avoid data loss. Thanks to durdinator for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15321 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
80287f1e8a
commit
00e7a571c5
3 changed files with 16 additions and 16 deletions
|
@ -258,19 +258,6 @@ class FileField(Field):
|
|||
def contribute_to_class(self, cls, name):
|
||||
super(FileField, self).contribute_to_class(cls, name)
|
||||
setattr(cls, self.name, self.descriptor_class(self))
|
||||
signals.post_delete.connect(self.delete_file, sender=cls)
|
||||
|
||||
def delete_file(self, instance, sender, **kwargs):
|
||||
file = getattr(instance, self.attname)
|
||||
# If no other object of this type references the file,
|
||||
# and it's not the default value for future objects,
|
||||
# delete it from the backend.
|
||||
if file and file.name != self.default and \
|
||||
not sender._default_manager.filter(**{self.name: file.name}):
|
||||
file.delete(save=False)
|
||||
elif file:
|
||||
# Otherwise, just close the file, so it doesn't tie up resources.
|
||||
file.close()
|
||||
|
||||
def get_directory_name(self):
|
||||
return os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(self.upload_to))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue