0001-document-correct-method-delete-16186.patch
fargo/fargo/models.py | ||
---|---|---|
17 | 17 |
from django.utils.text import slugify |
18 | 18 |
from django.utils.http import urlquote |
19 | 19 |
from django.dispatch import receiver |
20 |
from django.db.models.signals import post_save |
|
20 |
from django.db.models.signals import post_save, post_delete
|
|
21 | 21 |
from django.core.files.storage import default_storage |
22 | 22 | |
23 | 23 |
from jsonfield import JSONField |
... | ... | |
171 | 171 |
magic_object.close() |
172 | 172 |
super(Document, self).save(*args, **kwargs) |
173 | 173 | |
174 |
def delete(self): |
|
175 |
'''Delete file on model delete''' |
|
176 |
self.document_file.delete() |
|
177 |
super(Document, self).delete() |
|
178 | ||
179 | 174 |
@property |
180 | 175 |
def thumbnail_path(self): |
181 | 176 |
name = os.path.basename(self.content.name) |
... | ... | |
217 | 212 |
instance.content.file.name, |
218 | 213 |
instance.thumbnail_full_path]) |
219 | 214 |
threading.Thread(target=do).start() |
215 | ||
216 |
@receiver(post_delete, sender=Document) |
|
217 |
def delete_file(sender, instance, **kwargs): |
|
218 |
if instance.content: |
|
219 |
if os.path.isfile(instance.content.path): |
|
220 |
os.remove(instance.content.path) |
tests/test_manager.py | ||
---|---|---|
1 |
import os |
|
2 |
import pytest |
|
3 | ||
4 |
from django.core.files.base import ContentFile |
|
5 | ||
6 |
from fargo.fargo.models import Document |
|
7 | ||
8 |
pytestmark = pytest.mark.django_db |
|
9 | ||
1 | 10 |
def login(app, username='admin', password='admin', user=None): |
2 | 11 |
login_page = app.get('/login/') |
3 | 12 |
login_form = login_page.forms[0] |
... | ... | |
10 | 19 |
resp = login_form.submit() |
11 | 20 |
assert resp.status_int == 302 |
12 | 21 |
return app |
22 | ||
23 |
def test_document_delete(app): |
|
24 |
f = ContentFile('A test file, ez pz.', 'test_file.txt') |
|
25 |
doc = Document.objects.get_by_file(f) |
|
26 |
file_path = doc.content.path |
|
27 |
assert os.path.isfile(file_path) |
|
28 | ||
29 |
doc.delete() |
|
30 |
assert not os.path.isfile(file_path) |
|
13 |
- |