Esempio n. 1
0
def download_png(environ, *args, **kwargs):
    """ """
    required = ['datasets', 'x1', 'y1', 'x2', 'y2', 'resolution']
    missing = [x for x in required if x not in kwargs or 0 >= len(x)]
    if 0 < len(missing):
        msg = '{}  parameter(s) must be present in the request'
        msg = msg.format(', '.join(missing))
        return {'ok': False, 'details': msg}

    if 'SERVER_HOST' not in environ:
        msg = 'Webserver misconfigured: missing SERVER_HOST environment variable'
        return {'ok': False, 'details': msg}

    with storage_type.get_session() as storage:
        results = syntool_metadata.extract.get(root_dir,
                                               kwargs['datasets'].split(','),
                                               float(kwargs['x1']),
                                               float(kwargs['y1']),
                                               float(kwargs['x2']),
                                               float(kwargs['y2']),
                                               float(kwargs['resolution']),
                                               'PNG', environ['SERVER_HOST'],
                                               download_dir, storage)
    with open(results, 'r') as f:
        content = f.read()

    n = datetime.datetime.now()
    default_filename = 'syntool-archive-{}.tgz'.format(
        n.strftime('%Y%m%d_%H%M%S'))
    r = Response()
    r.body = content
    r.content_type = 'application/octet-stream'
    r.content_disposition = 'attachement; filename={}'.format(default_filename)
    r.content_description = 'File transfer'
    return r