Add new version upload option to use new file filename as the document filename
This commit is contained in:
@@ -156,6 +156,13 @@ class DocumentForm(forms.ModelForm):
|
||||
# To allow merging with DocumentForm_edit
|
||||
self.fields['document_type'].widget = forms.HiddenInput()
|
||||
|
||||
if instance:
|
||||
self.fields['use_file_name'] = forms.BooleanField(
|
||||
label=_(u'Use the new version filename as the document filename'),
|
||||
initial=False,
|
||||
required=False,
|
||||
)
|
||||
|
||||
# Instance's document_type overrides the passed document_type
|
||||
if instance:
|
||||
if hasattr(instance, 'document_type'):
|
||||
|
||||
@@ -52,7 +52,7 @@ class BaseModel(models.Model):
|
||||
def get_transformation_list(self):
|
||||
return SourceTransformation.transformations.get_for_object_as_list(self)
|
||||
|
||||
def upload_file(self, file_object, filename=None, document_type=None, expand=False, metadata_dict_list=None, user=None, document=None, new_version_data=None):
|
||||
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):
|
||||
if expand:
|
||||
try:
|
||||
cf = CompressedFile(file_object)
|
||||
@@ -63,11 +63,11 @@ class BaseModel(models.Model):
|
||||
except NotACompressedFile:
|
||||
self.upload_single_file(file_object, filename, document_type, metadata_dict_list, user)
|
||||
else:
|
||||
self.upload_single_file(file_object, filename, document_type, metadata_dict_list, user, document, new_version_data)
|
||||
self.upload_single_file(file_object, filename, use_file_name, document_type, metadata_dict_list, user, document, new_version_data)
|
||||
|
||||
file_object.close()
|
||||
|
||||
def upload_single_file(self, file_object, filename=None, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None):
|
||||
def upload_single_file(self, file_object, filename=None, use_file_name=False, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None):
|
||||
if not document:
|
||||
document = Document()
|
||||
if document_type:
|
||||
@@ -83,6 +83,11 @@ class BaseModel(models.Model):
|
||||
create_history(HISTORY_DOCUMENT_CREATED, document, {'user': user})
|
||||
else:
|
||||
create_history(HISTORY_DOCUMENT_CREATED, document)
|
||||
else:
|
||||
if use_file_name:
|
||||
filename = None
|
||||
else:
|
||||
filename = filename if filename else document.latest_version.filename
|
||||
|
||||
if not new_version_data:
|
||||
new_version_data = {}
|
||||
|
||||
@@ -126,7 +126,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
instance=document
|
||||
)
|
||||
if form.is_valid():
|
||||
#try:
|
||||
try:
|
||||
if document:
|
||||
expand = False
|
||||
else:
|
||||
@@ -139,22 +139,24 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
expand = False
|
||||
|
||||
new_filename = get_form_filename(form)
|
||||
|
||||
web_form.upload_file(request.FILES['file'],
|
||||
new_filename, document_type=document_type,
|
||||
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
||||
document_type=document_type,
|
||||
expand=expand,
|
||||
metadata_dict_list=decode_metadata_from_url(request.GET),
|
||||
user=request.user,
|
||||
document=document,
|
||||
new_version_data=form.cleaned_data.get('new_version_data')
|
||||
)
|
||||
#except Exception, e:
|
||||
# messages.error(request, _(u'Unhandled exception: %s') % e)
|
||||
if document:
|
||||
messages.success(request, _(u'Document version uploaded successfully.'))
|
||||
return HttpResponseRedirect(reverse('document_view_simple', args=[document.pk]))
|
||||
else:
|
||||
messages.success(request, _(u'Document uploaded successfully.'))
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Unhandled exception: %s') % e)
|
||||
else:
|
||||
form = WebFormForm(
|
||||
show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
||||
@@ -186,7 +188,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
instance=document
|
||||
)
|
||||
if form.is_valid():
|
||||
#try:
|
||||
try:
|
||||
staging_file = StagingFile.get(form.cleaned_data['staging_file_id'])
|
||||
if document:
|
||||
expand = False
|
||||
@@ -200,8 +202,10 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
expand = False
|
||||
|
||||
new_filename = get_form_filename(form)
|
||||
|
||||
staging_folder.upload_file(staging_file.upload(),
|
||||
new_filename, document_type=document_type,
|
||||
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
||||
document_type=document_type,
|
||||
expand=expand,
|
||||
metadata_dict_list=decode_metadata_from_url(request.GET),
|
||||
user=request.user,
|
||||
@@ -217,12 +221,12 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
transformations, errors = staging_folder.get_transformation_list()
|
||||
staging_file.delete(preview_size=staging_folder.get_preview_size(), transformations=transformations)
|
||||
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
||||
#except Exception, e:
|
||||
# messages.error(request, _(u'Unhandled exception: %s') % e)
|
||||
if document:
|
||||
return HttpResponseRedirect(reverse('document_view_simple', args=[document.pk]))
|
||||
else:
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Unhandled exception: %s') % e)
|
||||
else:
|
||||
form = StagingDocumentForm(cls=StagingFile,
|
||||
document_type=document_type,
|
||||
|
||||
Reference in New Issue
Block a user