Prevent upload error from desynchonizing the database

This commit is contained in:
Roberto Rosario
2012-01-26 11:37:20 -04:00
parent af58a8ccd0
commit 266fcc75df

View File

@@ -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
@@ -113,7 +115,13 @@ class BaseModel(models.Model):
if not new_version_data: if not new_version_data:
new_version_data = {} new_version_data = {}
try:
new_version = document.new_version(file=file_object, **new_version_data) 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()