| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import os
- from tempfile import NamedTemporaryFile
- from django.conf import settings
- from django_file_form.models import UploadedFile
- try:
- from pathlib import Path
- except ImportError:
- from pathlib2 import Path
- class TempFile(object):
- def __init__(self):
- self.named_temporary_file = None
- def create(self, content='abc', prefix=None):
- if self.named_temporary_file:
- raise Exception('Tempfile is already created')
- def create_named_temporary_file():
- f = NamedTemporaryFile(mode='w+b', prefix=prefix or 'tmp')
- f.write(content.encode())
- f.seek(0)
- return f
- self.named_temporary_file = create_named_temporary_file()
- def base_name(self):
- if not self.named_temporary_file:
- raise Exception('Tempfile is not created')
- return os.path.basename(self.named_temporary_file.name)
- def path(self):
- if not self.named_temporary_file:
- raise Exception('Tempfile is not created')
- return self.named_temporary_file.name
- def destroy(self):
- if self.named_temporary_file:
- uploaded_file = self.uploaded_file()
- if uploaded_file.exists():
- uploaded_file.unlink()
- self.named_temporary_file.close()
- self.named_temporary_file = None
- for uploaded_file in UploadedFile.objects.all():
- uploaded_file.uploaded_file.delete()
- def uploaded_file(self):
- if not self.named_temporary_file:
- raise Exception('Tempfile is not created')
- return Path(settings.MEDIA_ROOT).joinpath('example', self.base_name())
|