def graphLoadInv(request): ''' Form ''' if request.method == 'POST': form = GraphUploadForm(request.POST, request.FILES) # instantiating form if form.is_valid(): data = form.files['fileObj'] # get data invariants = form.cleaned_data[ 'Select_Invariants_you_want_computed'] data_dir = os.path.join( settings.MEDIA_ROOT, 'public', strftime("projectStamp%a%d%b%Y_%H.%M.%S/", localtime())) invariants_path = os.path.join(data_dir, 'graphInvariants') makeDirIfNone([data_dir]) # We got a zip if os.path.splitext(data.name)[1] == '.zip': writeBodyToDisk(data.read(), data_dir) graphs = glob(os.path.join(data_dir, '*')) else: # View only accepts a subset of file formats as regulated by template Validate func graphs = [os.path.join(data_dir, data.name)] saveFileToDisk(data, graphs[0]) request.session['graph_format'] = form.cleaned_data['graph_format'] request.session['email'] = form.cleaned_data['email'] # Launch thread for graphs & email user sendJobBeginEmail(request.session['email'], invariants, genGraph=False) for graph_fn in graphs: task_invariant_compute.delay(invariants, graph_fn, invariants_path, data_dir, form.cleaned_data['graph_format'], request.session['email']) request.session['success_msg'] = \ """ Your job successfully launched. You should receive an email when your job begins and another one when it completes.<br/> The process may take several hours (dependent on graph size) if you selected to compute all invariants.<br/> If you do not see an email in your <i>Inbox</i> check the <i>Spam</i> folder and add <code>[email protected]</code> to your safe list. """ return HttpResponseRedirect(get_script_prefix() + 'success') else: form = GraphUploadForm() # An empty, unbound form # Render the form return render_to_response( 'graphupload.html', {'graphUploadForm': form}, context_instance=RequestContext( request ) # Some failure to input data & returns a key signaling what is requested )
def graph_load_inv_prog(request, webargs): if request.method == 'POST' and webargs: split_webargs = webargs.split("/") to_email = split_webargs[0] if (not check_email(to_email)): return HttpResponse("ERROR: Incorrect email address format") try: in_graph_format = split_webargs[1] if in_graph_format not in ("graphml", "ncol", "edgelist", "lgl", "pajek", "graphdb", "numpy", "mat"): return HttpResponse("ERROR: Unknown graph input format") invariants = split_webargs[2:] for inv in invariants: if inv not in settings.VALID_FILE_TYPES: return HttpResponse( "ERROR: Invariant '{0}' unknown!".format(inv)) if not invariants: return HttpResponse("ERROR: No invariants to compute provided") except: return HttpResponse( "ERROR: Opaque Error with input graph format OR invariants chosen" ) data_dir = os.path.join( settings.MEDIA_ROOT, 'public', strftime("UploadGraph%a%d%b%Y_%H.%M.%S/", localtime())) makeDirIfNone([data_dir]) uploadedZip = writeBodyToDisk(request.body, data_dir)[0] # Not necessarily a zip try: # Assume its a zip first unzip(uploadedZip, data_dir) # Unzip the zip os.remove(uploadedZip) # Delete the zip except: print "Non-zip file uploaded ..." graph_invariants_loc = os.path.join(data_dir, 'graphInvariants') makeDirIfNone([graph_invariants_loc]) task_invariant_compute.delay(invariants, uploadedZip, graph_invariants_loc, data_dir, in_graph_format, to_email) sendJobBeginEmail(to_email, invariants) return HttpResponse("Successful job submission, please " \ "await reception & completion emails at {0}".format(to_email)) else: return HttpResponse("There was an error! If you believe it " \ "is on our end please email: {0}".format(settings.DEFAULT_FROM_EMAIL))
def graphLoadInv(request): ''' Form ''' if request.method == 'POST': form = GraphUploadForm(request.POST, request.FILES) # instantiating form if form.is_valid(): data = form.files['fileObj'] # get data invariants = form.cleaned_data['Select_Invariants_you_want_computed'] data_dir = os.path.join(settings.MEDIA_ROOT, 'public', strftime("projectStamp%a%d%b%Y_%H.%M.%S/", localtime())) invariants_path = os.path.join(data_dir, 'graphInvariants') makeDirIfNone([data_dir]) # We got a zip if os.path.splitext(data.name)[1] == '.zip': writeBodyToDisk(data.read(), data_dir) graphs = glob(os.path.join(data_dir,'*')) else: # View only accepts a subset of file formats as regulated by template Validate func graphs = [os.path.join(data_dir, data.name)] saveFileToDisk(data, graphs[0]) request.session['graph_format'] = form.cleaned_data['graph_format'] request.session['email'] = form.cleaned_data['email'] # Launch thread for graphs & email user sendJobBeginEmail(request.session['email'], invariants, genGraph=False) for graph_fn in graphs: task_invariant_compute.delay(invariants, graph_fn, invariants_path, data_dir, form.cleaned_data['graph_format'], request.session['email']) request.session['success_msg'] = \ """ Your job successfully launched. You should receive an email when your job begins and another one when it completes.<br/> The process may take several hours (dependent on graph size) if you selected to compute all invariants.<br/> If you do not see an email in your <i>Inbox</i> check the <i>Spam</i> folder and add <code>[email protected]</code> to your safe list. """ return HttpResponseRedirect(get_script_prefix()+'success') else: form = GraphUploadForm() # An empty, unbound form # Render the form return render_to_response( 'graphupload.html', {'graphUploadForm': form}, context_instance=RequestContext(request) # Some failure to input data & returns a key signaling what is requested )
def graph_load_inv_prog(request, webargs): if request.method == 'POST' and webargs: split_webargs = webargs.split("/") to_email = split_webargs[0] if (not check_email(to_email)): return HttpResponse("ERROR: Incorrect email address format") try: in_graph_format = split_webargs[1] if in_graph_format not in ("graphml", "ncol", "edgelist", "lgl", "pajek", "graphdb", "numpy", "mat"): return HttpResponse("ERROR: Unknown graph input format") invariants = split_webargs[2:] for inv in invariants: if inv not in settings.VALID_FILE_TYPES: return HttpResponse("ERROR: Invariant '{0}' unknown!".format(inv)) if not invariants: return HttpResponse("ERROR: No invariants to compute provided") except: return HttpResponse("ERROR: Opaque Error with input graph format OR invariants chosen") data_dir = os.path.join(settings.MEDIA_ROOT, 'public', strftime("UploadGraph%a%d%b%Y_%H.%M.%S/", localtime())) makeDirIfNone([data_dir]) uploadedZip = writeBodyToDisk(request.body, data_dir)[0] # Not necessarily a zip try: # Assume its a zip first unzip(uploadedZip, data_dir) # Unzip the zip os.remove(uploadedZip) # Delete the zip except: print "Non-zip file uploaded ..." graph_invariants_loc = os.path.join(data_dir, 'graphInvariants') makeDirIfNone([graph_invariants_loc]) task_invariant_compute.delay(invariants, uploadedZip, graph_invariants_loc, data_dir, in_graph_format, to_email) sendJobBeginEmail(to_email, invariants) return HttpResponse("Successful job submission, please " \ "await reception & completion emails at {0}".format(to_email)) else: return HttpResponse("There was an error! If you believe it " \ "is on our end please email: {0}".format(settings.DEFAULT_FROM_EMAIL))