def convert(request, webargs=None): ''' Form ''' if (request.method == 'POST' and not webargs): form = ConvertForm(request.POST, request.FILES) # instantiating form if form.is_valid(): baseDir = os.path.join(settings.MEDIA_ROOT, 'tmp', strftime('formUpload%a%d%b%Y_%H.%M.%S/', localtime())) saveDir = os.path.join(baseDir,'upload') # Save location of original uploads convertFileSaveLoc = os.path.join(baseDir,'converted') # Save location of converted data if not (os.path.exists(convertFileSaveLoc)): os.makedirs(convertFileSaveLoc) savedFile = os.path.join(saveDir, request.FILES['fileObj'].name) saveFileToDisk(request.FILES['fileObj'], savedFile) # If zip is uploaded if os.path.splitext(request.FILES['fileObj'].name)[1].strip() == '.zip': zipper.unzip(savedFile, saveDir) # Delete zip so its not included in the graphs we uploaded os.remove(savedFile) uploadedFiles = glob(os.path.join(saveDir, "*")) # get the uploaded file names else: uploadedFiles = [savedFile] err_msg="" for fn in uploadedFiles: err_msg = convert_graph(fn, form.cleaned_data['input_format'], convertFileSaveLoc, *form.cleaned_data['output_format']) dwnldLoc = request.META['wsgi.url_scheme'] + '://' + \ request.META['HTTP_HOST'] + convertFileSaveLoc.replace(' ','%20') if (err_msg): err_msg = "Your job completed with errors. The result can be found at %s\n. Here are the errors:%s" % (dwnldLoc, err_msg) return render_to_response( 'convertupload.html', {'convertForm': form, 'err_msg': err_msg+"\n"}, context_instance=RequestContext(request)) #else return HttpResponseRedirect(dwnldLoc) elif(request.method == 'POST' and webargs): # webargs is {inFormat}/{outFormat} inFormat = webargs.split('/')[0] # E.g 'graphml'| 'dot' | 'leda' outFormat = webargs.split('/')[1].split(',') outFormat = list(set(outFormat)) # Eliminate duplicates if any exist baseDir = os.path.join(settings.MEDIA_ROOT, 'tmp', strftime('progUpload%a%d%b%Y_%H.%M.%S/', localtime())) saveDir = os.path.join(baseDir,'upload') # Save location of original uploads convertFileSaveLoc = os.path.join(baseDir,'converted') # Save location of converted data if not os.path.exists(saveDir): os.makedirs(saveDir) if not os.path.exists(convertFileSaveLoc): os.makedirs(convertFileSaveLoc) uploadedFiles = writeBodyToDisk(request.body, saveDir)# can only be one file # TODO: Check me # Check for zip if os.path.splitext(uploadedFiles[0])[1].strip() == '.zip': zipper.unzip(uploadedFiles[0], saveDir) # Delete zip so its not included in the graphs we uploaded os.remove(uploadedFiles[0]) uploadedFiles = glob(os.path.join(saveDir, "*")) # get the uploaded file names err_msg = "" for fn in uploadedFiles: err_msg = convert_graph(fn, inFormat, convertFileSaveLoc, *outFormat) dwnldLoc = request.META['wsgi.url_scheme'] + '://' + \ request.META['HTTP_HOST'] + convertFileSaveLoc.replace(' ','%20') if err_msg: err_msg = "Completed with errors. View Data at: %s\n. Here are the errors:%s" % (dwnldLoc, err_msg) return HttpResponse(err_msg) return HttpResponse ( "Converted files available for download at " + dwnldLoc + " . The directory " + "may be empty if you try to convert from, and to the same format.") # change to render of a page with a link to data result else: form = ConvertForm() # An empty, unbound form # Render the form return render_to_response( 'convertupload.html', {'convertForm': form}, context_instance=RequestContext(request))
def convert(request, webargs=None): ''' Form ''' # request.session.clear() # NEW if (request.method == 'POST' and not webargs): form = ConvertForm(request.POST, request.FILES) # instantiating form if form.is_valid(): baseDir = os.path.join( settings.MEDIA_ROOT, 'tmp', strftime('formUpload%a%d%b%Y_%H.%M.%S/', localtime())) saveDir = os.path.join( baseDir, 'upload') # Save location of original uploads convertFileSaveLoc = os.path.join( baseDir, 'converted') # Save location of converted data if not (os.path.exists(convertFileSaveLoc)): os.makedirs(convertFileSaveLoc) savedFile = os.path.join(saveDir, request.FILES['fileObj'].name) saveFileToDisk(request.FILES['fileObj'], savedFile) # If zip is uploaded if os.path.splitext( request.FILES['fileObj'].name)[1].strip() == '.zip': uploadedFiles = zipper.unzip(savedFile, saveDir) # Delete zip os.remove(savedFile) else: uploadedFiles = [savedFile] isCorrectFileFormat, isCorrectFileType = convertFiles(uploadedFiles, form.cleaned_data['Select_file_type'], \ form.cleaned_data['Select_conversion_format'], convertFileSaveLoc) if not (isCorrectFileFormat): err_msg = "You did not upload any files with the correct extension for conversion!" return render_to_response( 'convertupload.html', { 'convertForm': form, 'err_msg': err_msg }, context_instance=RequestContext(request)) baseurl = request.META['HTTP_HOST'] host = request.META['wsgi.url_scheme'] rooturl = host + '://' + baseurl # Originally was: 'http://mrbrain.cs.jhu.edu' # Done for http & https dwnldLoc = rooturl + convertFileSaveLoc.replace( ' ', '%20') # TODO: Verify this works return HttpResponseRedirect(dwnldLoc) # Programmtic API elif (request.method == 'POST' and webargs): # webargs is {fileType}/{toFormat} fileType = webargs.split('/')[0] # E.g 'cc', 'deg', 'triangle' toFormat = (webargs.split('/')[1]).split( ',') # E.g 'mat', 'npy' or 'mat,csv' toFormat = list(set(toFormat)) # Eliminate duplicates if any exist # Make sure filetype is valid before doing any work if (fileType not in settings.VALID_FILE_TYPES.keys() and fileType not in settings.VALID_FILE_TYPES.values()): return HttpResponse( 'Invalid conversion type. Make sure toFormat is a valid type') # In case to format does not start with a '.'. Add if not for idx in range(len(toFormat)): if not toFormat[idx].startswith('.'): toFormat[idx] = '.' + toFormat[idx] baseDir = os.path.join( settings.MEDIA_ROOT, 'tmp', strftime('progUpload%a%d%b%Y_%H.%M.%S/', localtime())) saveDir = os.path.join(baseDir, 'upload') # Save location of original uploads convertFileSaveLoc = os.path.join( baseDir, 'converted') # Save location of converted data if not os.path.exists(saveDir): os.makedirs(saveDir) if not os.path.exists(convertFileSaveLoc): os.makedirs(convertFileSaveLoc) uploadedFiles = writeBodyToDisk(request.body, saveDir) isCorrectFileFormat, isCorrectFileType = convertFiles( uploadedFiles, fileType, toFormat, convertFileSaveLoc) if not (isCorrectFileType): # request.session.clear() return HttpResponse("[ERROR]: You did not enter a valid FileType.") if not (isCorrectFileFormat): # request.session.clear() return HttpResponse( "[ERROR]: You do not have any files with the correct extension for conversion" ) dwnldLoc = "http://mrbrain.cs.jhu.edu" + convertFileSaveLoc.replace( ' ', '%20') # request.session.clear() return HttpResponse( "Converted files available for download at " + dwnldLoc + " . The directory " + "may be empty if you try to convert to the same format the file is already in." ) # change to render of a page with a link to data result else: form = ConvertForm() # An empty, unbound form # Render the form return render_to_response('convertupload.html', {'convertForm': form}, context_instance=RequestContext(request))
def convert(request, webargs=None): ''' Form ''' # request.session.clear() # NEW if (request.method == 'POST' and not webargs): form = ConvertForm(request.POST, request.FILES) # instantiating form if form.is_valid(): baseDir = os.path.join(settings.MEDIA_ROOT, 'tmp', strftime('formUpload%a%d%b%Y_%H.%M.%S/', localtime())) saveDir = os.path.join(baseDir,'upload') # Save location of original uploads convertFileSaveLoc = os.path.join(baseDir,'converted') # Save location of converted data if not (os.path.exists(convertFileSaveLoc)): os.makedirs(convertFileSaveLoc) savedFile = os.path.join(saveDir, request.FILES['fileObj'].name) saveFileToDisk(request.FILES['fileObj'], savedFile) # If zip is uploaded if os.path.splitext(request.FILES['fileObj'].name)[1].strip() == '.zip': uploadedFiles = zipper.unzip(savedFile, saveDir) # Delete zip os.remove(savedFile) else: uploadedFiles = [savedFile] isCorrectFileFormat, isCorrectFileType = convertFiles(uploadedFiles, form.cleaned_data['Select_file_type'], \ form.cleaned_data['Select_conversion_format'], convertFileSaveLoc) if not (isCorrectFileFormat): err_msg = "You did not upload any files with the correct extension for conversion!" return render_to_response( 'convertupload.html', {'convertForm': form, 'err_msg': err_msg}, context_instance=RequestContext(request)) baseurl = request.META['HTTP_HOST'] host = request.META['wsgi.url_scheme'] rooturl = host + '://' + baseurl # Originally was: 'http://mrbrain.cs.jhu.edu' # Done for http & https dwnldLoc = rooturl + convertFileSaveLoc.replace(' ','%20') # TODO: Verify this works return HttpResponseRedirect(dwnldLoc) # Programmtic API elif(request.method == 'POST' and webargs): # webargs is {fileType}/{toFormat} fileType = webargs.split('/')[0] # E.g 'cc', 'deg', 'triangle' toFormat = (webargs.split('/')[1]).split(',') # E.g 'mat', 'npy' or 'mat,csv' toFormat = list(set(toFormat)) # Eliminate duplicates if any exist # Make sure filetype is valid before doing any work if (fileType not in settings.VALID_FILE_TYPES.keys() and fileType not in settings.VALID_FILE_TYPES.values()): return HttpResponse('Invalid conversion type. Make sure toFormat is a valid type') # In case to format does not start with a '.'. Add if not for idx in range (len(toFormat)): if not toFormat[idx].startswith('.'): toFormat[idx] = '.'+toFormat[idx] baseDir = os.path.join(settings.MEDIA_ROOT, 'tmp', strftime('progUpload%a%d%b%Y_%H.%M.%S/', localtime())) saveDir = os.path.join(baseDir,'upload') # Save location of original uploads convertFileSaveLoc = os.path.join(baseDir,'converted') # Save location of converted data if not os.path.exists(saveDir): os.makedirs(saveDir) if not os.path.exists(convertFileSaveLoc): os.makedirs(convertFileSaveLoc) uploadedFiles = writeBodyToDisk(request.body, saveDir) isCorrectFileFormat, isCorrectFileType = convertFiles(uploadedFiles, fileType, toFormat, convertFileSaveLoc) if not (isCorrectFileType): # request.session.clear() return HttpResponse("[ERROR]: You did not enter a valid FileType.") if not (isCorrectFileFormat): # request.session.clear() return HttpResponse("[ERROR]: You do not have any files with the correct extension for conversion") dwnldLoc = "http://mrbrain.cs.jhu.edu"+ convertFileSaveLoc.replace(' ','%20') # request.session.clear() return HttpResponse ( "Converted files available for download at " + dwnldLoc + " . The directory " + "may be empty if you try to convert to the same format the file is already in.") # change to render of a page with a link to data result else: form = ConvertForm() # An empty, unbound form # Render the form return render_to_response( 'convertupload.html', {'convertForm': form}, context_instance=RequestContext(request))