aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzsloan2019-05-24 12:01:29 -0500
committerzsloan2019-05-24 12:01:29 -0500
commit850d2ba6f885226869080e071fe1f8ddf17808ad (patch)
tree7a44b55b36688919fec32f7671ba7ee3d4ad8b4f
parent1217563ede4aef48b124613ea852c4db8803e6b4 (diff)
downloadgenenetwork2-850d2ba6f885226869080e071fe1f8ddf17808ad.tar.gz
Return JSON error instead of html now
-rw-r--r--wqflask/wqflask/api/router.py35
1 files changed, 23 insertions, 12 deletions
diff --git a/wqflask/wqflask/api/router.py b/wqflask/wqflask/api/router.py
index efc817ea..22d16e30 100644
--- a/wqflask/wqflask/api/router.py
+++ b/wqflask/wqflask/api/router.py
@@ -93,7 +93,7 @@ def get_groups_list(species_name=None):
return flask.jsonify(groups_list)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/group/<path:group_name>".format(version))
@app.route("/api/v_{}/group/<path:group_name>.<path:file_format>".format(version))
@@ -136,7 +136,7 @@ def get_group_info(group_name, species_name = None, file_format = "json"):
return flask.jsonify(group_dict)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/datasets/<path:group_name>".format(version))
@app.route("/api/v_{}/datasets/<path:species_name>/<path:group_name>".format(version))
@@ -188,7 +188,7 @@ def get_datasets_for_group(group_name, species_name=None):
return flask.jsonify(datasets_list)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/dataset/<path:dataset_name>".format(version))
@app.route("/api/v_{}/dataset/<path:dataset_name>.<path:file_format>".format(version))
@@ -288,7 +288,7 @@ def get_dataset_info(dataset_name, group_name = None, file_format="json"):
elif len(datasets_list) == 1:
return flask.jsonify(dataset_dict)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/sample_data/<path:dataset_name>".format(version))
@@ -382,9 +382,9 @@ def all_sample_data(dataset_name, file_format = "csv"):
output.headers["Content-type"] = "text/csv"
return output
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/sample_data/<path:dataset_name>/<path:trait_name>".format(version))
@app.route("/api/v_{}/sample_data/<path:dataset_name>/<path:trait_name>.<path:file_format>".format(version))
@@ -473,7 +473,7 @@ def trait_sample_data(dataset_name, trait_name, file_format = "json"):
return flask.jsonify(sample_list)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/trait/<path:dataset_name>/<path:trait_name>".format(version))
@app.route("/api/v_{}/trait/<path:dataset_name>/<path:trait_name>.<path:file_format>".format(version))
@@ -544,7 +544,7 @@ def get_trait_info(dataset_name, trait_name, file_format = "json"):
return flask.jsonify(trait_dict)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/correlation".format(version), methods=('GET',))
def get_corr_results():
@@ -553,7 +553,7 @@ def get_corr_results():
if len(results) > 0:
return flask.jsonify(results) #ZS: I think flask.jsonify expects a dict/list instead of JSON
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/mapping".format(version), methods=('GET',))
def get_mapping_results():
@@ -571,7 +571,7 @@ def get_mapping_results():
return output
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
@app.route("/api/v_{}/genotypes/<path:group_name>".format(version))
@app.route("/api/v_{}/genotypes/<path:group_name>.<path:file_format>".format(version))
@@ -591,7 +591,7 @@ def get_genotypes(group_name, file_format="csv"):
csv_writer = csv.writer(si, delimiter = '\t', escapechar = "\\", quoting = csv.QUOTE_NONE)
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
else:
filename = group_name + ".bimbam"
@@ -603,7 +603,7 @@ def get_genotypes(group_name, file_format="csv"):
csv_writer = csv.writer(si, delimiter = ',')
else:
- return render_template("/api/no_results.html")
+ return return_error(source=request.url_rule.rule, title="No Results", details="")
csv_writer.writerows(output_lines)
output = make_response(si.getvalue())
@@ -619,6 +619,17 @@ def get_traits(dataset_name, file_format = "json"):
NotImplemented
+def return_error(source, title, details):
+ json_ob = {"errors": [
+ {
+ "source": { "pointer": source },
+ "title" : title,
+ "detail": details
+ }
+ ]}
+
+ return flask.jsonify(json_ob)
+
def get_dataset_trait_ids(dataset_name):
if "Geno" in dataset_name:
data_type = "Geno" #ZS: Need to pass back the dataset type