mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-07-31 14:02:41 +02:00
Show tracebacks on errors
This commit is contained in:
@@ -4,6 +4,16 @@
|
||||
<div class="container mt-4 text-center">
|
||||
<h2>Error</h2>
|
||||
<p>{{ error_message }}</p>
|
||||
|
||||
{% if error_details %}
|
||||
<details>
|
||||
<summary>Error Details</summary>
|
||||
<code style="text-align: start;">
|
||||
<pre>{{error_details}}</pre>
|
||||
</code>
|
||||
</details>
|
||||
{% endif %}
|
||||
|
||||
<button class="btn btn-primary mt-3" onclick="window.history.back()">Go Back</button>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
+43
-20
@@ -271,17 +271,25 @@ async def packet_list(request):
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="Invalid or missing node ID",
|
||||
error_details=None,
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, content_type="text/html")
|
||||
return web.Response(text=rendered, status=400, content_type="text/html")
|
||||
|
||||
# Parse and validate portnum (optional)
|
||||
portnum = request.query.get("portnum")
|
||||
try:
|
||||
portnum = int(portnum) if portnum else None
|
||||
except ValueError:
|
||||
return web.Response(status=400, text="Invalid portnum value")
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="Invalid portnum value",
|
||||
error_details=None,
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, status=400, content_type="text/html")
|
||||
|
||||
# Run tasks concurrently
|
||||
async with asyncio.TaskGroup() as tg:
|
||||
@@ -302,10 +310,11 @@ async def packet_list(request):
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="Node not found",
|
||||
error_details=None,
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, content_type="text/html")
|
||||
return web.Response(text=rendered, status=404, content_type="text/html")
|
||||
|
||||
# Render template
|
||||
template = env.get_template("node.html")
|
||||
@@ -333,6 +342,7 @@ async def packet_list(request):
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="Internal server error",
|
||||
error_details=traceback.format_exc(),
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
@@ -1057,12 +1067,14 @@ async def nodelist(request):
|
||||
content_type="text/html",
|
||||
)
|
||||
except Exception as e:
|
||||
|
||||
return web.Response(
|
||||
text="An error occurred while processing your request.",
|
||||
status=500,
|
||||
content_type="text/plain",
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="An error occurred while processing your request.",
|
||||
error_details=traceback.format_exc(),
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, status=500, content_type="text/html")
|
||||
|
||||
@routes.get("/api/nodes")
|
||||
async def api_nodes(request):
|
||||
@@ -1166,11 +1178,14 @@ async def net(request):
|
||||
|
||||
except Exception as e:
|
||||
print("Error processing net request")
|
||||
return web.Response(
|
||||
text="An internal server error occurred.",
|
||||
status=500,
|
||||
content_type="text/plain",
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="An internal server error occurred.",
|
||||
error_details=traceback.format_exc(),
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, status=500, content_type="text/html")
|
||||
|
||||
|
||||
@routes.get("/map")
|
||||
@@ -1250,11 +1265,15 @@ async def top(request):
|
||||
content_type="text/html",
|
||||
)
|
||||
except Exception as e:
|
||||
return web.Response(
|
||||
text=f"An error occurred: {str(e)}",
|
||||
status=500,
|
||||
content_type="text/plain",
|
||||
print("Error in /top:", e)
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="An error occurred in /top",
|
||||
error_details=traceback.format_exc(),
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, status=500, content_type="text/html")
|
||||
|
||||
@routes.get("/chat")
|
||||
async def chat(request):
|
||||
@@ -1278,11 +1297,15 @@ async def chat(request):
|
||||
)
|
||||
except Exception as e:
|
||||
print("Error in /chat:", e)
|
||||
return web.Response(
|
||||
text="An error occurred while processing your request.",
|
||||
status=500,
|
||||
content_type="text/plain",
|
||||
template = env.get_template("error.html")
|
||||
rendered = template.render(
|
||||
error_message="An error occurred while processing your request.",
|
||||
error_details=traceback.format_exc(),
|
||||
site_config=CONFIG,
|
||||
SOFTWARE_RELEASE=SOFTWARE_RELEASE,
|
||||
)
|
||||
return web.Response(text=rendered, status=500, content_type="text/html")
|
||||
|
||||
@routes.get("/chat/updates")
|
||||
async def chat_updates(request):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user