Skip to content

Commit daa9e0b

Browse files
Add HTTP header to export so it's downloaded as file from browsers
1 parent e35fda2 commit daa9e0b

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

aw_server/rest.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import traceback
33
import json
44

5-
from flask import request, Blueprint, jsonify
5+
from flask import request, Blueprint, jsonify, make_response
66
from flask_restplus import Api, Resource, fields
77
import iso8601
88
from datetime import datetime, timedelta
@@ -260,7 +260,12 @@ class ExportAllResource(Resource):
260260
@api.doc(model=buckets_export)
261261
@copy_doc(ServerAPI.export_all)
262262
def get(self):
263-
return {"buckets": app.api.export_all()}, 200
263+
buckets_export = app.api.export_all()
264+
payload = {"buckets": buckets_export}
265+
response = make_response(json.dumps(payload))
266+
filename = "aw-buckets-export.json"
267+
response.headers["Content-Disposition"] = "attachment; filename={}".format(filename)
268+
return response
264269

265270

266271
# TODO: Perhaps we don't need this, could be done with a query argument to /0/export instead
@@ -270,7 +275,11 @@ class BucketExportResource(Resource):
270275
@copy_doc(ServerAPI.export_bucket)
271276
def get(self, bucket_id):
272277
bucket_export = app.api.export_bucket(bucket_id)
273-
return {"buckets": {bucket_export["id"]: bucket_export}}, 200
278+
payload = {"buckets": {bucket_export["id"]: bucket_export}}
279+
response = make_response(json.dumps(payload))
280+
filename = "aw-bucket-export_{}.json".format(bucket_export["id"])
281+
response.headers["Content-Disposition"] = "attachment; filename={}".format(filename)
282+
return response
274283

275284

276285
@api.route("/0/import")

0 commit comments

Comments
 (0)