Example #1
0
def viewDataset(year, month, dataset, dpath=None):
    #print(year, month, dataset, dpath)
    datasetName = dataset
    datasetRoot = app.config['DATASET_ROOT']
    datasetPath = path.join(str(year), str(month), dataset)
    dataset = models.Datasets.query.filter(
        models.Datasets.path == datasetPath
    ).first()

    if dpath:
        wholePath = abspath(join(datasetRoot, datasetPath, dpath or '')).encode('utf-8')
        if isfile(wholePath):
            return send_from_directory(dirname(wholePath), basename(wholePath))
	elif isdir(wholePath) and dpath[-1] != '/':
            print('redirecting to /datasets/%d/%s/%s/%s/' % (year, month, datasetName, quote(dpath)))
            return redirect('/datasets/%d/%s/%s/%s/' % (year, month, datasetName, quote(dpath)))

    if not dataset:
        return(render_template("error.html",
               message="Could not find dataset"))

    dataset.cleanDate = cleanDate(dataset.updated_at)
    pathDict = {}
    if not dataset.url:
        try:
            pathDict, dirUp, metadata = index_dir(
                dpath,
                dataset
            )
        except Exception as e:
            return(render_template("error.html",
                   message="Could not generate index %s" % e))

    if dataset.url:
        pathDict = None
        dirUp = None

    # should use @memoize instead
    key=path.join(datasetRoot, datasetPath)
    datasetSize = cache.get(key)
    if datasetSize is None:
        datasetSize = get_size(start_path=path.join(datasetRoot, datasetPath))
        cache.set(key, datasetSize, 60*60)

    return(
        render_template(
            'dataset.html',
            datasetRoot=datasetRoot,
            dataset=dataset,
            pathDict=pathDict,
            dirUp=dirUp,
            quote=quote,
            metadata=metadata,
            unquote=unquote,
            datasetID=dataset.datasetID,
            datasetSize=datasetSize
        )
    )
Example #2
0
def viewDatasetURL(datasetName):
    dataset = models.Datasets.query.filter(
        models.Datasets.name == datasetName).first()
    if not dataset:
        return (render_template("error.html",
                                message="Could not find dataset"))

    dataset.cleanDate = cleanDate(dataset.updated_at)
    return (render_template('dataset.html',
                            dataset=dataset,
                            dirUp=None,
                            pathDict=None))
Example #3
0
def viewDataset(year, month, dataset, dpath=None):
    #print(year, month, dataset, dpath)
    datasetName = dataset
    datasetRoot = app.config['DATASET_ROOT']
    datasetPath = path.join(str(year), str(month), dataset)
    dataset = models.Datasets.query.filter(
        models.Datasets.path == datasetPath).first()

    if dpath:
        wholePath = abspath(join(datasetRoot, datasetPath, dpath
                                 or '')).encode('utf-8')
        if isfile(wholePath):
            return send_from_directory(dirname(wholePath), basename(wholePath))
        elif isdir(wholePath) and dpath[-1] != '/':
            print('redirecting to /datasets/%d/%s/%s/%s/' %
                  (year, month, datasetName, quote(dpath)))
            return redirect('/datasets/%d/%s/%s/%s/' %
                            (year, month, datasetName, quote(dpath)))

    if not dataset:
        return (render_template("error.html",
                                message="Could not find dataset"))

    dataset.cleanDate = cleanDate(dataset.updated_at)
    pathDict = {}
    if not dataset.url:
        try:
            pathDict, dirUp, metadata = index_dir(dpath, dataset)
        except Exception as e:
            return (render_template("error.html",
                                    message="Could not generate index %s" % e))

    if dataset.url:
        pathDict = None
        dirUp = None

    # should use @memoize instead
    key = path.join(datasetRoot, datasetPath)
    datasetSize = cache.get(key)
    if datasetSize is None:
        datasetSize = get_size(start_path=path.join(datasetRoot, datasetPath))
        cache.set(key, datasetSize, 60 * 60)

    return (render_template('dataset.html',
                            datasetRoot=datasetRoot,
                            dataset=dataset,
                            pathDict=pathDict,
                            dirUp=dirUp,
                            quote=quote,
                            metadata=metadata,
                            unquote=unquote,
                            datasetID=dataset.datasetID,
                            datasetSize=datasetSize))
Example #4
0
def viewDatasetURL(datasetName):
    dataset = models.Datasets.query.filter(
        models.Datasets.name == datasetName
    ).first()
    if not dataset:
        return(render_template("error.html",
               message="Could not find dataset"))

    dataset.cleanDate = cleanDate(dataset.updated_at)
    return(
        render_template(
            'dataset.html',
            dataset=dataset,
            dirUp=None,
            pathDict=None
        )
    )
Example #5
0
def viewDataset(year, month, dataset, directory=None):
    datasetRoot = app.config['DATASET_ROOT']
    datasetPath = path.join(str(year), str(month), dataset)
    datasetSize = get_size(start_path=path.join(datasetRoot, datasetPath))
    dataset = models.Datasets.query.filter(
        models.Datasets.path == datasetPath
    ).first()
    if directory:
        wholePath = path.join(datasetRoot, datasetPath, directory)
        if path.isfile(wholePath):
            return send_file(
                wholePath,
                as_attachment=True,
                attachment_filename=path.basename(wholePath)
            )
    if not dataset:
        return(render_template("error.html",
               message="Could not find dataset"))
    dataset.cleanDate = cleanDate(dataset.updated_at)
    pathDict = {}
    if not dataset.url:
        try:
            pathDict, dirUp, metadata = index_dir(
                directory,
                dataset
            )
        except Exception as e:
            return(render_template("error.html",
                   message="Could not generate index %s" % e))
    if dataset.url:
        pathDict = None
        dirUp = None
    return(
        render_template(
            'dataset.html',
            datasetRoot=datasetRoot,
            dataset=dataset,
            pathDict=pathDict,
            dirUp=dirUp,
            quote=quote,
            metadata=metadata,
            unquote=unquote,
            datasetID=dataset.datasetID,
            datasetSize=datasetSize
        )
    )