Beispiel #1
0
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))
Beispiel #2
0
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))
Beispiel #3
0
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))