From 93746ac3a7db2f81066524d882284376dc20af84 Mon Sep 17 00:00:00 2001 From: emlunde Date: Thu, 5 Dec 2024 13:10:44 +0100 Subject: [PATCH 1/2] Fix: fixed serialization and deserialization of queries with datetimes --- .../SAP/src/controllers/AnalysisController.py | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/web/src/SAP/src/controllers/AnalysisController.py b/web/src/SAP/src/controllers/AnalysisController.py index 637d90d0..6e504623 100644 --- a/web/src/SAP/src/controllers/AnalysisController.py +++ b/web/src/SAP/src/controllers/AnalysisController.py @@ -1,6 +1,7 @@ import base64 import json import sys +from datetime import datetime from flask import abort from typing import Any, Dict from web.src.SAP.generated.models.analysis_query import AnalysisQuery @@ -25,16 +26,41 @@ from ..services.queue_service import post_and_await_reload from ..services.search.transpiler import AbstractSyntaxTreeVisitor + +def serialize_query_for_json(query): + if isinstance(query, dict): + return {k: serialize_query_for_json(v) for k, v in query.items()} + elif isinstance(query, list): + return [serialize_query_for_json(item) for item in query] + elif isinstance(query, datetime): + return query.isoformat() + else: + return query + +def deserialize_query(query): + if isinstance(query, dict): + return {k: deserialize_query(v) for k, v in query.items()} + elif isinstance(query, list): + return [deserialize_query(item) for item in query] + elif isinstance(query, str): + try: + return datetime.fromisoformat(query) + except ValueError: + return query + else: + return query def parse_paging_token(token): if token: body = base64.b64decode(token) - return json.loads(body) + parsed = json.loads(body) + deserialized_parsed = deserialize_query(parsed) + return deserialized_parsed else: return None - def render_paging_token(page_size, query, offset): + query = serialize_query_for_json(query) body = {"page_size": int(page_size), "query": query, "offset": int(offset)} return str(base64.b64encode(json.dumps(body).encode("utf8")), encoding="utf8") From 0e51672c3ab19cc07316383f406de2ffd39ad3ee Mon Sep 17 00:00:00 2001 From: emlunde Date: Thu, 5 Dec 2024 14:52:24 +0100 Subject: [PATCH 2/2] Fix: renamed displayname for columns on analyse results page to not include '/' which is not a supported escape character by lucene parse --- app/src/app/i18n.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/app/i18n.ts b/app/src/app/i18n.ts index 012d2a7e..d1cd934e 100644 --- a/app/src/app/i18n.ts +++ b/app/src/app/i18n.ts @@ -53,7 +53,7 @@ const fieldDisplayNames = { animal_species: "Animal", sample_info: "Info_sample", cpr_nr: "CPR_no.", - gender: "M/F", + gender: "Gender", name: "Name", age: "Age", primary_isolate: "Primary_isolate", @@ -91,10 +91,10 @@ const fieldDisplayNames = { amr_azi: "AMR_Azi", amr_fep: "AMR_Fep", amr_fot: "AMR_Fot", - amr_f_c: "AMR_F/C", + amr_f_c: "AMR_FC", amr_fox: "AMR_Fox", amr_taz: "AMR_Taz", - amr_t_c: "AMR_T/C", + amr_t_c: "AMR_TC", amr_chl: "AMR_Chl", amr_cip: "AMR_Cip", amr_cli: "AMR_Cli",