Add new version upload option to use new file filename as the document filename

This commit is contained in:
Roberto Rosario
2011-12-04 03:21:34 -04:00
parent a4127f39ff
commit 071fed8996
3 changed files with 79 additions and 63 deletions

View File

@@ -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'):

View File

@@ -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 = {}

View File

@@ -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,