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 } ], } }) csv = request.GET.get('csv', False) 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) folder = None if csv == 'True': if request.POST.has_key('folder'): folder_id = request.POST['folder'] folder = get_object_or_404(Folder, pk=folder_id) result = web_form.upload_file_csv(folder,request.FILES['file'], request.FILES['csv_file'], new_filename, use_file_name=form.cleaned_data.get('use_file_name', False), document_type=document_type, expand=True, metadata_dict_list=decode_metadata_from_url(request.GET), user=request.user, document=document, new_version_data=form.cleaned_data.get('new_version_data') ) else: if request.POST.has_key('folder'): folder_id = request.POST['folder'] folder = get_object_or_404(Folder, pk=folder_id) result = web_form.upload_file(folder,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_view_simple', args=[document.pk])) else: if result['is_compressed'] == None: messages.success(request, _(u'File uploaded successfully.')) if result['is_compressed'] == True: messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.')) if result['is_compressed'] == 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, e: if settings.DEBUG: raise messages.error(request, _(u'Unhandled exception: %s') % e) else: print 'form.is_valid: False' else: if csv == 'True': form = WebFormFormCustom( document_type=document_type, source=web_form, instance=document, user=request.user ) 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 StagingFile = create_staging_file_class(request, staging_folder.folder_path, source=staging_folder) if request.method == 'POST': form = StagingDocumentForm(request.POST, request.FILES, cls=StagingFile, 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 = StagingFile.get(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(None, 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: if result['is_compressed'] == None: messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename) if result['is_compressed'] == True: messages.success(request, _(u'Staging file: %s, uncompressed successfully and uploaded as individual files.') % staging_file.filename) if result['is_compressed'] == 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: 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 NewDocumentVersionNotAllowed: messages.error(request, _(u'New version uploads are not allowed for this document.')) except Exception, e: if settings.DEBUG: raise messages.error(request, _(u'Unhandled exception: %s') % e) else: if csv == 'True': form = StagingDocumentFormCustom(cls=StagingFile, document_type=document_type, source=staging_folder, instance=document ) else: form = StagingDocumentForm(cls=StagingFile, document_type=document_type, show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document, source=staging_folder, instance=document ) try: staging_filelist = StagingFile.get_all() except Exception, e: messages.error(request, e) staging_filelist = []
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 and results[SOURCE_CHOICE_SCANWEB_FORM].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 #************************************************************************ elif results[SOURCE_CHOICE_SCANWEB_FORM].count(): source_type = results[SOURCE_CHOICE_SCANWEB_FORM][0].source_type source_id = results[SOURCE_CHOICE_SCANWEB_FORM][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_view_simple', args=[document.pk])) else: if result['is_compressed'] == None: messages.success( request, _(u'File uploaded successfully.')) if result['is_compressed'] == True: messages.success( request, _(u'File uncompressed successfully and uploaded as individual files.' )) if result['is_compressed'] == 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, e: if settings.DEBUG: raise messages.error(request, _(u'Unhandled exception: %s') % e) 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, }, }) #*************************************** Scanner ******************************************************** elif source_type == SOURCE_CHOICE_SCANWEB_FORM: scanweb_form = get_object_or_404(ScanWebForm, pk=source_id) context['source'] = scanweb_form if request.method == 'POST': #****************************your modifications********************************************* from django.core.files.uploadedfile import InMemoryUploadedFile import tempfile if 'file_base64' in request.POST: if 'file' in request.POST: request.POST.pop('file') rawfile = request.POST['file_base64'].decode('base64') tmpfile = tempfile.NamedTemporaryFile() tmpfile.write(rawfile) # This is for django 1.5: inmemmory = InMemoryUploadedFile( tmpfile, 'file', request.POST.get('new_filename', ''), 'image/jpeg', len(rawfile), None) # when mayan gets upgraded to django 1.5 the # InMemoryUploadedFile requires an extra argument # which is also None request.FILES['file'] = inmemmory form = ScanWebFormForm(request.POST, request.FILES, document_type=document_type, source=scanweb_form, instance=document) if form.is_valid(): try: expand = False new_filename = get_form_filename(form) result = scanweb_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_view_simple', args=[document.pk])) else: messages.success(request, _(u'File uploaded successfully.')) return HttpResponseRedirect( request.get_full_path()) except NewDocumentVersionNotAllowed: messages.error( request, _(u'New version uploads are not allowed for this document.' )) except Exception, e: if settings.DEBUG: raise messages.error(request, _(u'Unhandled exception: %s') % e) else: form = ScanWebFormForm(document_type=document_type, source=scanweb_form, instance=document) if document: title = _(u'upload a new version from source: %s' ) % scanweb_form.title else: title = _(u'upload a local document from source: %s' ) % scanweb_form.title subtemplates_list.append({ 'name': 'generic_scanform_subtemplate.html', #generic_form_subtemplate.html', 'context': { 'form': form, 'title': title, }, })