Prevent upload error from desynchonizing the database
This commit is contained in:
@@ -59,7 +59,7 @@ class BaseModel(models.Model):
|
|||||||
def get_transformation_list(self):
|
def get_transformation_list(self):
|
||||||
return SourceTransformation.transformations.get_for_object_as_list(self)
|
return SourceTransformation.transformations.get_for_object_as_list(self)
|
||||||
|
|
||||||
def upload_file(self, file_object, filename=None, use_file_name=False, document_type=None, expand=False, metadata_dict_list=None, user=None, document=None, new_version_data=None, verbose=False):
|
def upload_file(self, file_object, filename=None, use_file_name=False, document_type=None, expand=False, metadata_dict_list=None, user=None, document=None, new_version_data=None, command_line=False):
|
||||||
is_compressed = None
|
is_compressed = None
|
||||||
|
|
||||||
if expand:
|
if expand:
|
||||||
@@ -67,7 +67,7 @@ class BaseModel(models.Model):
|
|||||||
cf = CompressedFile(file_object)
|
cf = CompressedFile(file_object)
|
||||||
count = 1
|
count = 1
|
||||||
for fp in cf.children():
|
for fp in cf.children():
|
||||||
if verbose:
|
if command_line:
|
||||||
print 'Uploading file #%d: %s' % (count, fp)
|
print 'Uploading file #%d: %s' % (count, fp)
|
||||||
self.upload_single_file(file_object=fp, filename=None, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
|
self.upload_single_file(file_object=fp, filename=None, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
|
||||||
fp.close()
|
fp.close()
|
||||||
@@ -76,6 +76,8 @@ class BaseModel(models.Model):
|
|||||||
except NotACompressedFile:
|
except NotACompressedFile:
|
||||||
is_compressed = False
|
is_compressed = False
|
||||||
logging.debug('Exception: NotACompressedFile')
|
logging.debug('Exception: NotACompressedFile')
|
||||||
|
if command_line:
|
||||||
|
raise
|
||||||
self.upload_single_file(file_object=file_object, filename=filename, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
|
self.upload_single_file(file_object=file_object, filename=filename, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
|
||||||
else:
|
else:
|
||||||
is_compressed = True
|
is_compressed = True
|
||||||
@@ -112,8 +114,14 @@ class BaseModel(models.Model):
|
|||||||
|
|
||||||
if not new_version_data:
|
if not new_version_data:
|
||||||
new_version_data = {}
|
new_version_data = {}
|
||||||
|
|
||||||
new_version = document.new_version(file=file_object, **new_version_data)
|
try:
|
||||||
|
new_version = document.new_version(file=file_object, **new_version_data)
|
||||||
|
except Exception:
|
||||||
|
# Don't leave the database in a broken state
|
||||||
|
document.delete()
|
||||||
|
raise
|
||||||
|
|
||||||
if filename:
|
if filename:
|
||||||
new_version.filename = filename
|
new_version.filename = filename
|
||||||
new_version.save()
|
new_version.save()
|
||||||
|
|||||||
Reference in New Issue
Block a user