def upload_choice(request, task_id): try: upload_rec = get_pending_upload(request.session['username'], task_id) except: return HttpResponseForbidden() res = AsyncResult(task_id) if res.state == "FAILURE" and type(res.result).__name__ == "TooManyDaeFound": names = res.result.names else: return HttpResponseForbidden() if request.method == 'POST': form = UploadChoiceForm(task_id, names, request.POST) if form.is_valid(): selected_dae = form.cleaned_data['file'] for id,value in form.fields['file'].choices: if id == selected_dae: selected_name = value task = import_upload.delay(upload_rec['main_rowkey'], upload_rec['subfiles'], selected_name) save_upload_task(username=request.session['username'], task_id=task.task_id, row_key=upload_rec['main_rowkey'], filename=upload_rec['filename'], subfiles=upload_rec['subfiles'], dae_choice=selected_name, task_name="import_upload") try: remove_pending_upload(request.session['username'], task_id) except: return HttpResponseServerError("There was an error removing your old upload record.") return redirect('content.views.upload_processing', task_id=task.task_id) else: form = UploadChoiceForm(task_id, names) view_params = {'task_id':task_id, 'form':form} return render_to_response('content/upload_choice.html', view_params, context_instance = RequestContext(request))
def upload(request, task_id=None): if task_id: try: upload_rec = get_pending_upload(request.session['username'], task_id) except: return HttpResponseForbidden() orig_name = upload_rec['filename'] subfiles_uploaded = upload_rec['subfiles'] existing_files = subfiles_uploaded.keys() existing_files.append(orig_name) res = AsyncResult(task_id) if res.state == "FAILURE" and type(res.result).__name__ == "SubFilesNotFound": names = res.result.names else: return HttpResponseForbidden() if request.method == 'POST': if task_id: form = UploadForm(names, request.POST, request.FILES) if form.is_valid(): subfiles = subfiles_uploaded for n in names: subfiles[n] = request.FILES[n].row_key task = import_upload.delay(upload_rec['main_rowkey'], subfiles, upload_rec['dae_choice']) save_upload_task(username=request.session['username'], task_id=task.task_id, row_key=upload_rec['main_rowkey'], filename=upload_rec['filename'], subfiles=subfiles, dae_choice=upload_rec['dae_choice'], task_name="import_upload") try: remove_pending_upload(request.session['username'], task_id) except: return HttpResponseServerError("There was an error removing your old upload record.") return redirect('content.views.upload_processing', task_id=task.task_id) else: view_params = {'form':form, 'existing_files':existing_files} else: form = UploadForm(['File'], request.POST, request.FILES) if form.is_valid(): upfile = request.FILES['File'] task = import_upload.delay(upfile.row_key, subfiles={}) save_upload_task(username=request.session['username'], task_id=task.task_id, row_key=upfile.row_key, filename=upfile.name, subfiles={}, dae_choice="", task_name="import_upload") return redirect('content.views.upload_processing', task_id=task.task_id) else: view_params = {'form':form} else: if task_id: form = UploadForm(names) view_params = {'form':form, 'existing_files':existing_files} else: form = UploadForm(['File']) view_params = {'form':form} view_params['task_id'] = task_id return render_to_response('content/upload.html', view_params, context_instance = RequestContext(request))