def get_context_data(self, **kwargs): context = super(UploadInteractiveView, self).get_context_data(**kwargs) context['title'] = _( 'Upload a local document from source: %s') % self.source.title context.update({ 'sidebar_subtemplates_list': [{ 'name': 'main/generic_subtemplate.html', 'context': { 'title': _('Current document type'), 'paragraphs': [self.document_type if self.document_type else _('None')], 'side_bar': True, } }, { 'name': 'main/generic_subtemplate.html', 'context': { 'title': _('Current metadata'), 'paragraphs': metadata_repr_as_list( decode_metadata_from_url(self.request.GET)), 'side_bar': True, } }], }) return context
def get_context_data(self, **kwargs): context = super(UploadInteractiveView, self).get_context_data(**kwargs) context['title'] = _('Upload a local document from source: %s') % self.source.title context.update( { 'sidebar_subtemplates_list': [ { 'name': 'main/generic_subtemplate.html', 'context': { 'title': _('Current document type'), 'paragraphs': [self.document_type if self.document_type else _('None')], 'side_bar': True, } }, { 'name': 'main/generic_subtemplate.html', 'context': { 'title': _('Current metadata'), 'paragraphs': metadata_repr_as_list(decode_metadata_from_url(self.request.GET)), 'side_bar': True, } } ], } ) return context
context.update( { 'sidebar_subtemplates_list': [ { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Current document type'), 'paragraphs': [document_type if document_type else _(u'None')], 'side_bar': True, } }, { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Current metadata'), 'paragraphs': metadata_repr_as_list(decode_metadata_from_url(request.GET)), 'side_bar': True, } } ], } ) return render_to_response('generic_form.html', context, context_instance=RequestContext(request)) def get_form_filename(form): filename = None if form: if form.cleaned_data['new_filename']:
def upload_interactive(request, source_type=None, source_id=None, document_pk=None): subtemplates_list = [] if document_pk: document = get_object_or_404(Document, pk=document_pk) try: Permission.objects.check_permissions( request.user, [PERMISSION_DOCUMENT_NEW_VERSION]) except PermissionDenied: AccessEntry.objects.check_access(PERMISSION_DOCUMENT_NEW_VERSION, request.user, document) results = get_active_tab_links(document) else: Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE]) document = None results = get_active_tab_links() context = {} if results[SOURCE_CHOICE_WEB_FORM].count( ) == 0 and results[SOURCE_CHOICE_STAGING].count() == 0: source_setup_link = mark_safe( '<a href="%s">%s</a>' % (reverse('setup_web_form_list'), ugettext(u'here'))) subtemplates_list.append({ 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Upload sources'), 'paragraphs': [ _(u'No interactive document sources have been defined or none have been enabled.' ), _(u'Click %(setup_link)s to add or enable some document sources.' ) % { 'setup_link': source_setup_link } ], } }) document_type_id = request.GET.get('document_type_id', None) if document_type_id: document_type = get_object_or_404(DocumentType, pk=document_type_id) else: document_type = None if source_type is None and source_id is None: if results[SOURCE_CHOICE_WEB_FORM].count(): source_type = results[SOURCE_CHOICE_WEB_FORM][0].source_type source_id = results[SOURCE_CHOICE_WEB_FORM][0].pk elif results[SOURCE_CHOICE_STAGING].count(): source_type = results[SOURCE_CHOICE_STAGING][0].source_type source_id = results[SOURCE_CHOICE_STAGING][0].pk if source_type and source_id: if source_type == SOURCE_CHOICE_WEB_FORM: web_form = get_object_or_404(WebForm, pk=source_id) context['source'] = web_form if request.method == 'POST': form = WebFormForm( request.POST, request.FILES, document_type=document_type, show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=web_form, 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') else: if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: expand = True else: expand = False new_filename = get_form_filename(form) result = 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'), description=form.cleaned_data.get('description')) if document: messages.success( request, _(u'New document version uploaded successfully.' )) return HttpResponseRedirect( reverse('document_version_list', args=[document.pk])) else: if result['is_compressed'] is None: messages.success( request, _(u'File uploaded successfully.')) if result['is_compressed'] is True: messages.success( request, _(u'File uncompressed successfully and uploaded as individual files.' )) if result['is_compressed'] is False: messages.warning( request, _(u'File was not a compressed file, uploaded as it was.' )) return HttpResponseRedirect( request.get_full_path()) except NewDocumentVersionNotAllowed: messages.error( request, _(u'New version uploads are not allowed for this document.' )) except Exception as exception: if settings.DEBUG: raise messages.error( request, _(u'Unhandled exception: %s') % exception) else: form = WebFormForm( show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, document_type=document_type, source=web_form, instance=document) if document: title = _( u'upload a new version from source: %s') % web_form.title else: title = _(u'upload a local document from source: %s' ) % web_form.title subtemplates_list.append({ 'name': 'generic_form_subtemplate.html', 'context': { 'form': form, 'title': title, }, }) elif source_type == SOURCE_CHOICE_STAGING: staging_folder = get_object_or_404(StagingFolder, pk=source_id) context['source'] = staging_folder if request.method == 'POST': form = StagingDocumentForm( request.POST, request.FILES, document_type=document_type, show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=staging_folder, instance=document) if form.is_valid(): try: staging_file = staging_folder.get_file( encoded_filename=form. cleaned_data['staging_file_id']) if document: expand = False else: if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: expand = form.cleaned_data.get('expand') else: if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: expand = True else: expand = False new_filename = get_form_filename(form) result = staging_folder.upload_file( staging_file.as_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'), description=form.cleaned_data.get('description')) if document: messages.success( request, _(u'Document version from staging file: %s, uploaded successfully.' ) % staging_file.filename) else: if result['is_compressed'] is None: messages.success( request, _(u'Staging file: %s, uploaded successfully.' ) % staging_file.filename) if result['is_compressed'] is True: messages.success( request, _(u'Staging file: %s, uncompressed successfully and uploaded as individual files.' ) % staging_file.filename) if result['is_compressed'] is False: messages.warning( request, _(u'Staging file: %s, was not compressed, uploaded as a single file.' ) % staging_file.filename) if staging_folder.delete_after_upload: staging_file.delete() 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 NewDocumentVersionNotAllowed: messages.error( request, _(u'New version uploads are not allowed for this document.' )) except Exception as exception: if settings.DEBUG: raise messages.error( request, _(u'Unhandled exception: %s') % exception) else: form = StagingDocumentForm( document_type=document_type, show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=staging_folder, instance=document) try: staging_filelist = list(staging_folder.get_files()) except Exception as exception: messages.error(request, exception) staging_filelist = [] finally: if document: title = _(u'upload a new version from staging source: %s' ) % staging_folder.title else: title = _(u'upload a document from staging source: %s' ) % staging_folder.title subtemplates_list = [ { 'name': 'generic_form_subtemplate.html', 'context': { 'form': form, 'title': title, } }, { 'name': 'generic_list_subtemplate.html', 'context': { 'title': _(u'files in staging path'), 'object_list': staging_filelist, 'hide_link': True, } }, ] if document: context['object'] = document context.update({ 'document_type_id': document_type_id, 'subtemplates_list': subtemplates_list, 'temporary_navigation_links': { 'form_header': { 'upload_version': { 'links': results['tab_links'] }, 'upload_interactive': { 'links': results['tab_links'] } } }, }) if not document: context.update({ 'sidebar_subtemplates_list': [{ 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Current document type'), 'paragraphs': [document_type if document_type else _(u'None')], 'side_bar': True, } }, { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Current metadata'), 'paragraphs': metadata_repr_as_list(decode_metadata_from_url( request.GET)), 'side_bar': True, } }], }) return render_to_response('generic_form.html', context, context_instance=RequestContext(request))
def upload_interactive(request, source_type=None, source_id=None, document_pk=None): subtemplates_list = [] if document_pk: document = get_object_or_404(Document, pk=document_pk) try: Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_NEW_VERSION]) except PermissionDenied: AccessEntry.objects.check_access(PERMISSION_DOCUMENT_NEW_VERSION, request.user, document) results = get_active_tab_links(document) else: Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE]) document = None results = get_active_tab_links() context = {} if results[SOURCE_CHOICE_WEB_FORM].count() == 0 and results[SOURCE_CHOICE_STAGING].count() == 0: source_setup_link = mark_safe('<a href="%s">%s</a>' % (reverse('setup_web_form_list'), ugettext(u'here'))) subtemplates_list.append( { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Upload sources'), 'paragraphs': [ _(u'No interactive document sources have been defined or none have been enabled.'), _(u'Click %(setup_link)s to add or enable some document sources.') % { 'setup_link': source_setup_link } ], } }) document_type_id = request.GET.get('document_type_id', None) if document_type_id: document_type = get_object_or_404(DocumentType, pk=document_type_id) else: document_type = None if source_type is None and source_id is None: if results[SOURCE_CHOICE_WEB_FORM].count(): source_type = results[SOURCE_CHOICE_WEB_FORM][0].source_type source_id = results[SOURCE_CHOICE_WEB_FORM][0].pk elif results[SOURCE_CHOICE_STAGING].count(): source_type = results[SOURCE_CHOICE_STAGING][0].source_type source_id = results[SOURCE_CHOICE_STAGING][0].pk if source_type and source_id: if source_type == SOURCE_CHOICE_WEB_FORM: web_form = get_object_or_404(WebForm, pk=source_id) context['source'] = web_form if request.method == 'POST': form = WebFormForm(request.POST, request.FILES, document_type=document_type, show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=web_form, 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') else: if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: expand = True else: expand = False new_filename = get_form_filename(form) result = 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'New document version uploaded successfully.')) return HttpResponseRedirect(reverse('document_version_list', args=[document.pk])) else: if result['is_compressed'] is None: messages.success(request, _(u'File uploaded successfully.')) if result['is_compressed'] is True: messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.')) if result['is_compressed'] is False: messages.warning(request, _(u'File was not a compressed file, uploaded as it was.')) return HttpResponseRedirect(request.get_full_path()) except NewDocumentVersionNotAllowed: messages.error(request, _(u'New version uploads are not allowed for this document.')) except Exception as exception: if settings.DEBUG: raise messages.error(request, _(u'Unhandled exception: %s') % exception) else: form = WebFormForm( show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, document_type=document_type, source=web_form, instance=document ) if document: title = _(u'upload a new version from source: %s') % web_form.title else: title = _(u'upload a local document from source: %s') % web_form.title subtemplates_list.append({ 'name': 'generic_form_subtemplate.html', 'context': { 'form': form, 'title': title, }, }) elif source_type == SOURCE_CHOICE_STAGING: staging_folder = get_object_or_404(StagingFolder, pk=source_id) context['source'] = staging_folder if request.method == 'POST': form = StagingDocumentForm(request.POST, request.FILES, document_type=document_type, show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=staging_folder, instance=document ) if form.is_valid(): try: staging_file = staging_folder.get_file(encoded_filename=form.cleaned_data['staging_file_id']) if document: expand = False else: if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: expand = form.cleaned_data.get('expand') else: if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: expand = True else: expand = False new_filename = get_form_filename(form) result = staging_folder.upload_file( staging_file.as_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 from staging file: %s, uploaded successfully.') % staging_file.filename) else: if result['is_compressed'] is None: messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename) if result['is_compressed'] is True: messages.success(request, _(u'Staging file: %s, uncompressed successfully and uploaded as individual files.') % staging_file.filename) if result['is_compressed'] is False: messages.warning(request, _(u'Staging file: %s, was not compressed, uploaded as a single file.') % staging_file.filename) if staging_folder.delete_after_upload: staging_file.delete() 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 NewDocumentVersionNotAllowed: messages.error(request, _(u'New version uploads are not allowed for this document.')) except Exception as exception: if settings.DEBUG: raise messages.error(request, _(u'Unhandled exception: %s') % exception) else: form = StagingDocumentForm(document_type=document_type, show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=staging_folder, instance=document ) try: staging_filelist = list(staging_folder.get_files()) except Exception as exception: messages.error(request, exception) staging_filelist = [] finally: if document: title = _(u'upload a new version from staging source: %s') % staging_folder.title else: title = _(u'upload a document from staging source: %s') % staging_folder.title subtemplates_list = [ { 'name': 'generic_form_subtemplate.html', 'context': { 'form': form, 'title': title, } }, { 'name': 'generic_list_subtemplate.html', 'context': { 'title': _(u'files in staging path'), 'object_list': staging_filelist, 'hide_link': True, } }, ] if document: context['object'] = document context.update({ 'document_type_id': document_type_id, 'subtemplates_list': subtemplates_list, 'temporary_navigation_links': { 'form_header': { 'upload_version': { 'links': results['tab_links'] }, 'upload_interactive': { 'links': results['tab_links'] } } }, }) if not document: context.update( { 'sidebar_subtemplates_list': [ { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Current document type'), 'paragraphs': [document_type if document_type else _(u'None')], 'side_bar': True, } }, { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Current metadata'), 'paragraphs': metadata_repr_as_list(decode_metadata_from_url(request.GET)), 'side_bar': True, } } ], } ) return render_to_response('generic_form.html', context, context_instance=RequestContext(request))