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