[Django] #17812: Symlink link to media files is deleted after calling of delete method of ImageField if value of it field is None.

9 views
Skip to first unread message

Django

unread,
Mar 2, 2012, 4:49:24 AM3/2/12
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
-------------------------------+--------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 1.3
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------
If media folder for media files is symlink then after calling of delete
method of {{{ ImageField }}} model's field this symbolic link has been
deleted if value of this field is None (i. e. value of {{{
image_field.name }}} is empty).
This was found for django 1.3.1 (but maybe and is for others). This is
happening for {{{ ImageField }}} only. {{{ FileField }}} works good.

--
Ticket URL: <https://code.djangoproject.com/ticket/17812>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Mar 2, 2012, 4:55:48 AM3/2/12
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
-------------------------------------+-------------------------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: new
Component: File | Version: 1.3
uploads/storage | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by anonymous):

* needs_docs: => 0
* component: Uncategorized => File uploads/storage
* needs_tests: => 0
* needs_better_patch: => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/17812#comment:1>

Django

unread,
Mar 4, 2012, 4:57:11 AM3/4/12
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
-------------------------------------+-------------------------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: closed
Component: File | Version: 1.3
uploads/storage | Resolution:
Severity: Normal | worksforme
Keywords: | Triage Stage:
Has patch: 0 | Unreviewed
Needs tests: 0 | Needs documentation: 0
Easy pickings: 0 | Patch needs improvement: 0
| UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by aaugustin):

* status: new => closed
* resolution: => worksforme


Comment:

Here's what I understand from your report (I see you aren't a native
speaker):

- `settings.MEDIA_ROOT` is a symlink — for instance, `/var/www/media ->
/mnt/storage/media`
- you save a model that has an `ImageField`, without providing any value —
`instance = MyModel.objects.get(pk=1); instance.my_image = None;
instance.save()`
- the symlink gets deleted

I tried that, and I can't reproduce the problem. To be honest, it sounds
extremely unlikely that Django would delete a directory or a symlink like
that.

--
Ticket URL: <https://code.djangoproject.com/ticket/17812#comment:2>

Django

unread,
Mar 11, 2012, 1:36:17 AM3/11/12
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
-------------------------------------+-------------------------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: reopened
Component: File | Version: 1.3
uploads/storage | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by anonymous):

* status: closed => reopened
* resolution: worksforme =>


Comment:

It's happening when I try to delete image by {{{ image.delete() }}}
method.

It's better to show by an example.
Suppose for example we have some model:

{{{
class Image(models.Model):
image = models.ImageField()
class Meta:
app_label = 'image'
}}}

Then we try to do following:

{{{
image = Image()
image.image.delete()
}}}

Thereafter symlink to media files will be deleted.

Also I was mistaken about the {{{ FileField }}}: This is happening for it
too.

Apparently this is happening because the name of image field {{{
image.image.name }}} is a blank string {{{ '' }}}.
Therefore {{{ FileSystemStorage.delete }}} method gets path to media
symlink and deletes it.

--
Ticket URL: <https://code.djangoproject.com/ticket/17812#comment:3>

Django

unread,
Mar 11, 2012, 5:31:41 AM3/11/12
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
-------------------------------------+-------------------------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: reopened
Component: File | Version: 1.3
uploads/storage | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by anonymous):

* has_patch: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/17812#comment:4>

Django

unread,
Mar 11, 2012, 7:53:34 AM3/11/12
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
--------------------------------------+------------------------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: reopened
Component: File uploads/storage | Version: 1.3
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by ramiro):

* needs_tests: 0 => 1
* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/17812#comment:5>

Django

unread,
Sep 20, 2013, 1:00:37 PM9/20/13
to django-...@googlegroups.com
#17812: Symlink link to media files is deleted after calling of delete method of
ImageField if value of it field is None.
--------------------------------------+------------------------------------
Reporter: piterimov@… | Owner: nobody
Type: Bug | Status: closed

Component: File uploads/storage | Version: 1.3
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by timo):

* status: new => closed

* resolution: => fixed


Comment:

It looks like ea3fe78a9d742904f6902cdc353a11d795418105 will prevent this.

--
Ticket URL: <https://code.djangoproject.com/ticket/17812#comment:7>

Reply all
Reply to author
Forward
0 new messages