diff --git a/apps/documents/forms.py b/apps/documents/forms.py index a829516327..991b6488e8 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -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'): diff --git a/apps/sources/models.py b/apps/sources/models.py index 44822ee0ba..3d09915617 100644 --- a/apps/sources/models.py +++ b/apps/sources/models.py @@ -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 = {} diff --git a/apps/sources/views.py b/apps/sources/views.py index c668b23909..88e1d08b72 100644 --- a/apps/sources/views.py +++ b/apps/sources/views.py @@ -126,35 +126,37 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No instance=document ) if form.is_valid(): - #try: - if document: - expand = False - else: - if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: - expand = form.cleaned_data.get('expand') + try: + if document: + expand = False else: - if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: - expand = True + if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: + expand = form.cleaned_data.get('expand') else: - expand = False - - new_filename = get_form_filename(form) - web_form.upload_file(request.FILES['file'], - new_filename, 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()) + if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: + expand = True + else: + expand = False + + new_filename = get_form_filename(form) + + web_form.upload_file(request.FILES['file'], + 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') + ) + 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,43 +188,45 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No instance=document ) if form.is_valid(): - #try: - staging_file = StagingFile.get(form.cleaned_data['staging_file_id']) - if document: - expand = False - else: - if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: - expand = form.cleaned_dataget('expand') + try: + staging_file = StagingFile.get(form.cleaned_data['staging_file_id']) + if document: + expand = False else: - if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: - expand = True + if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: + expand = form.cleaned_dataget('expand') else: - expand = False + if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: + expand = True + else: + expand = False - new_filename = get_form_filename(form) - staging_folder.upload_file(staging_file.upload(), - new_filename, 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') - ) - if document: - messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename) - else: - messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename) + new_filename = get_form_filename(form) + + staging_folder.upload_file(staging_file.upload(), + 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') + ) + if document: + messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename) + else: + messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename) - if staging_folder.delete_after_upload: - 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()) + if staging_folder.delete_after_upload: + 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) + 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,