From f2afd3d0eeaea7a33f34e77158fee0d9a1409368 Mon Sep 17 00:00:00 2001 From: Pablo Revilla Date: Tue, 12 Aug 2025 12:55:26 -0700 Subject: [PATCH] Add the Replying to link to the chat page --- meshview/templates/error.html | 9 +++++++++ meshview/web.py | 35 ++++++++++++++++++++++++++--------- 2 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 meshview/templates/error.html diff --git a/meshview/templates/error.html b/meshview/templates/error.html new file mode 100644 index 0000000..4408d6c --- /dev/null +++ b/meshview/templates/error.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block body %} +
+

Error

+

{{ error_message }}

+ +
+{% endblock %} diff --git a/meshview/web.py b/meshview/web.py index a9e9987..b305902 100644 --- a/meshview/web.py +++ b/meshview/web.py @@ -435,21 +435,38 @@ async def firehose_updates(request): @routes.get("/packet/{packet_id}") async def packet(request): - packet = await store.get_packet(int(request.match_info["packet_id"])) + try: + packet_id = int(request.match_info["packet_id"]) + except (ValueError, KeyError): + template = env.get_template("error.html") + rendered = template.render( + error_message="Invalid packet ID", + site_config=CONFIG, + SOFTWARE_RELEASE=SOFTWARE_RELEASE, + ) + return web.Response(text=rendered, content_type="text/html") + + packet = await store.get_packet(packet_id) if not packet: - return web.Response(status=404) + template = env.get_template("error.html") + rendered = template.render( + error_message="Packet not found", + site_config=CONFIG, + SOFTWARE_RELEASE=SOFTWARE_RELEASE, + ) + return web.Response(text=rendered, content_type="text/html") node = await store.get_node(packet.from_node_id) template = env.get_template("packet_index.html") - return web.Response( - text=template.render( - packet=Packet.from_model(packet), - site_config = CONFIG, - SOFTWARE_RELEASE=SOFTWARE_RELEASE - ), - content_type="text/html", + rendered = template.render( + packet=Packet.from_model(packet), + node=node, + site_config=CONFIG, + SOFTWARE_RELEASE=SOFTWARE_RELEASE, ) + return web.Response(text=rendered, content_type="text/html") + @routes.get("/graph/power_json/{node_id}") async def graph_power_json(request):