def upload_progress(request): """ Return JSON object with information about the progress of an upload. """ logger.debug("JSON recieved in %s value %s" % (whoami(),request.GET)) progress_id = '' if 'X-Progress-ID' in request.GET: progress_id = request.GET['X-Progress-ID'] elif 'X-Progress-ID' in request.META: progress_id = request.META['X-Progress-ID'] if progress_id: cache_key = "%s_%s" % (request.META['REMOTE_ADDR'], progress_id) logger.debug('Searching for cache key %s in %s' % (cache_key, whoami())) data = cache.get(cache_key) logger.debug('Data retrieved %s', (data)) if data: return HttpResponse(simplejson.dumps(data)) else: return HttpResponse(simplejson.dumps({'size': 0, 'received' : 0})) else: return HttpResponseServerError('Server Error: You must provide X-Progress-ID header or query param.')
def upload_file(request): """ Function upload_file starts form for confupload_form.html """ if request.method == 'POST': form = ConfUploadForm(request.POST, request.FILES) if form.is_valid(): UF_FORM = form.cleaned_data if 'X-Progress-ID' in request.GET: request.session['X-Progress-ID'] = request.GET['X-Progress-ID'] logger.info("Starting file %s proccessing in %s for user from %s" % (request.FILES['file'].name, whoami(), get_client_ip(request))) fileattr = handle_uploaded_file(request.FILES['file'], get_session_key(request) + '_' + request.FILES['file'].name, UF_FORM['ostype']) if not ( fileattr == None ): request.session['archpath'] = fileattr['archpath'] logger.info("Sucsessfully handeled file %s in %s" % (request.FILES['file'].name, whoami())) if fileattr['archpath'] == 'counfdump none': with open(fileattr['dumpfilename']) as infile: AIXSNAP = load(infile) else: snap = AixSnap(fileattr['archpath']) AIXSNAP = snap.snap_analyze(request.FILES['file'].name) snap.dump_snap_to_json(request.FILES['file'].name, fileattr['dumpfilename']) snap.snap_destroy() request.session['AIXSNAP'] = AIXSNAP request.session['dumpfilename'] = fileattr['dumpfilename'] return redirect('/upload/anal_acc/') else: logger.info("File type %s is not good, reported from %s" % (request.FILES['file'].name, whoami())) return HttpResponse(_('Bad file type or file corrupted')) else: logger.info("Empty upload form prepared from %s for user from %s, " "session id %s" % (whoami(), get_client_ip(request), get_session_key(request))) form = ConfUploadForm() # A empty, unbound form return render_to_response('confupload_form.html', {'form': form, 'MEDIA_URL' : MEDIA_URL}, context_instance=RequestContext(request))
def anal_acc(request): AIXSNAP = request.session['AIXSNAP'] if request.method == 'POST': if 'pdf_save' in request.POST: logger.info("PDF generation requested for %s in %s" % (request.session['archpath'], whoami())) return aix_pdf_generate(AIXSNAP) if 'ccoutput_save'in request.POST: logger.info("Saving in site-format requested for %s in %s" % (request.session['archpath'], whoami())) return return_file(request.session['dumpfilename'], 'snapreport_' + AIXSNAP['sysparams']['plat_type'] + "-" + AIXSNAP['sysparams']['plat_model'] + "_" + \ AIXSNAP['sysparams']['plat_serial'] + ".AIX.confdump") else: cache_key = "%s_%s" % (request.META['REMOTE_ADDR'], request.session['X-Progress-ID']) cache.delete(cache_key) logger.info("Snap object analyzed for %s and output generated in %s" % (request.session['archpath'], whoami())) return render_to_response("snapreport_form.html", AIXSNAP)