From e7a06a60f0e2edb3897007f212c9050bd95beebc Mon Sep 17 00:00:00 2001 From: Aarshpatel12 Date: Mon, 23 Mar 2026 12:41:22 +0530 Subject: [PATCH] fix: use safe .get() lookups in html template to prevent KeyError crashes (Fixes #38) --- apps/backend/app/utils/report_template.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/apps/backend/app/utils/report_template.py b/apps/backend/app/utils/report_template.py index f3d06e2c..219839a8 100644 --- a/apps/backend/app/utils/report_template.py +++ b/apps/backend/app/utils/report_template.py @@ -1,6 +1,19 @@ def render_report_html(data): - params_html = "".join(f"{k}{v}" for k, v in data["asl_parameters"]) - missing_html = "".join(f"
  • {param}
  • " for param in data["missing_parameters"]) + # 1. Safely handle asl_parameters (whether it's a dict or a list) + asl_params = data.get("asl_parameters", {}) + if isinstance(asl_params, dict): + params_html = "".join(f"{k}{v}" for k, v in asl_params.items()) + else: + params_html = "".join(f"{k}{v}" for k, v in asl_params) + + # 2. Safely get missing parameters (checking both the new and old key names) + missing_params = data.get("missing_required_parameters", data.get("missing_parameters", [])) + missing_html = "".join(f"
  • {param}
  • " for param in missing_params) + + # 3. Safely get the reports with a fallback default string + basic_report = data.get("basic_report", "No basic report available.") + extended_report = data.get("extended_report", "No extended report available.") + return f""" @@ -18,13 +31,13 @@ def render_report_html(data): {params_html}

    Basic Report

    -

    {data["basic_report"]}

    +

    {basic_report}

    Extended Report

    -

    {data["extended_report"]}

    +

    {extended_report}

    Missing Parameters

    - """ + """ \ No newline at end of file