Implemeted deleting staging files after upload
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import errno
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile, SimpleUploadedFile
|
||||
from django.utils.translation import ugettext
|
||||
|
||||
|
||||
from documents.conf.settings import STAGING_DIRECTORY
|
||||
|
||||
@@ -49,8 +52,12 @@ class StagingFile(object):
|
||||
raise AttributeError, name
|
||||
|
||||
def upload(self):
|
||||
return SimpleUploadedFile(name=self.filename, content=open(self.filepath).read())
|
||||
|
||||
try:
|
||||
return SimpleUploadedFile(name=self.filename, content=open(self.filepath).read())
|
||||
except Exception, exc:
|
||||
raise Exception(ugettext(u'Unable to upload staging file: %s') % exc)
|
||||
|
||||
|
||||
#return InMemoryUploadedFile(
|
||||
# file=open(self.filepath, 'r'),
|
||||
# field_name='',
|
||||
@@ -59,3 +66,12 @@ class StagingFile(object):
|
||||
# size=os.path.getsize(self.filepath),
|
||||
# charset=None,
|
||||
#)
|
||||
|
||||
def delete(self):
|
||||
try:
|
||||
os.unlink(self.filepath)
|
||||
except OSError, exc:
|
||||
if exc.errno == errno.ENOENT:
|
||||
pass
|
||||
else:
|
||||
raise OSError(ugettext(u'Unable to delete staging file: %s') % exc)
|
||||
|
||||
@@ -14,6 +14,9 @@ from forms import DocumentTypeSelectForm, DocumentCreateWizard, \
|
||||
|
||||
from staging import StagingFile
|
||||
|
||||
from documents.conf.settings import DELETE_STAGING_FILE_AFTER_UPLOAD
|
||||
|
||||
|
||||
def document_list(request):
|
||||
return object_list(
|
||||
request,
|
||||
@@ -175,17 +178,27 @@ def document_create_from_staging(request, file_id, document_type_id, multiple=Tr
|
||||
document_type = get_object_or_404(DocumentType, pk=document_type_id)
|
||||
staging_file = StagingFile.get(id=int(file_id))
|
||||
|
||||
document = Document(file=staging_file.upload(), document_type=document_type)
|
||||
document.save()
|
||||
|
||||
#TODO: need to grab url query string from HTTP_REFERER
|
||||
_save_metadata_from_request(request, document)
|
||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||
try:
|
||||
document.create_fs_links()
|
||||
document = Document(file=staging_file.upload(), document_type=document_type)
|
||||
document.save()
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
else:
|
||||
#TODO: need to grab url query string from HTTP_REFERER
|
||||
_save_metadata_from_request(request, document)
|
||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||
try:
|
||||
document.create_fs_links()
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
if DELETE_STAGING_FILE_AFTER_UPLOAD:
|
||||
try:
|
||||
staging_file.delete()
|
||||
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
if multiple:
|
||||
return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user