From 8fea63a7e72a5e9c7fc5fcc79ce38e512c719c0a Mon Sep 17 00:00:00 2001 From: everaldorodrigo Date: Wed, 19 Jul 2023 15:12:43 -0700 Subject: [PATCH 1/2] Fix HTTP 500 when empty response. --- web/handlers/genomics/lineage.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/handlers/genomics/lineage.py b/web/handlers/genomics/lineage.py index e791a7df..1944ec77 100644 --- a/web/handlers/genomics/lineage.py +++ b/web/handlers/genomics/lineage.py @@ -343,7 +343,8 @@ def _get(self): df_response.loc[:, "proportion"] = prop[0] df_response.loc[:, "proportion_ci_lower"] = prop[1] df_response.loc[:, "proportion_ci_upper"] = prop[2] - df_response = df_response[df_response["proportion"] >= query_frequency_threshold] + if "proportion" in df_response: + df_response = df_response[df_response["proportion"] >= query_frequency_threshold] results[",".join(muts)] = df_response.to_dict(orient="records") resp = {"success": True, "results": results} return resp From 3f0007aa94f28880c47e614fecc1162ed07afb01 Mon Sep 17 00:00:00 2001 From: everaldorodrigo Date: Wed, 19 Jul 2023 15:40:37 -0700 Subject: [PATCH 2/2] Force HTTP 400 when 'mutations' param has ';' instead of 'AND'. --- web/handlers/genomics/lineage.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/handlers/genomics/lineage.py b/web/handlers/genomics/lineage.py index 1944ec77..4eb40827 100644 --- a/web/handlers/genomics/lineage.py +++ b/web/handlers/genomics/lineage.py @@ -4,6 +4,7 @@ from .util import create_nested_mutation_query, calculate_proportion, parse_location_id_to_query, get_total_hits import re +from tornado.web import HTTPError class LineageByCountryHandler(BaseHandler): @@ -288,6 +289,8 @@ class MutationsByLineage(BaseHandler): def _get(self): query_location = self.get_argument("location_id", None) query_mutations = self.get_argument("mutations", None) + if ";" in query_mutations: + raise HTTPError(400) query_pangolin_lineage = self.get_argument("pangolin_lineage", None) query_mutations = [muts.split(",") for muts in query_mutations.split(" AND ")] if query_mutations is not None else [] query_frequency_threshold = self.get_argument("frequency", None)