Fix broken image when missing telemetry.

This commit is contained in:
Jason Michalski
2024-05-20 22:03:55 -07:00
parent 46496240f9
commit 1afe4e49a1
3 changed files with 23 additions and 0 deletions

View File

@@ -182,3 +182,12 @@ async def get_packets_seen(packet_id):
.order_by(PacketSeen.import_time.desc())
)
return result.scalars()
async def has_packets(node_id, portnum):
async with database.async_session() as session:
return bool(
(await session.execute(
select(Packet.id).where(Packet.from_node_id == node_id).limit(1)
)).scalar()
)

View File

@@ -45,7 +45,9 @@
<dt>hw model</dt>
<dd>{{node.hw_model}}</dd>
</dl>
{% if has_telemetry %}
<a href="/graph/power/{{node_id}}"><img src="/graph/power/{{node_id}}" height="200em" width="200em"/></a>
{% endif %}
</div>
{% else %}
<div class="card-body">

View File

@@ -237,6 +237,7 @@ async def packet_list(request):
node = tg.create_task(store.get_node(node_id))
trace = tg.create_task(build_trace(node_id))
neighbors = tg.create_task(build_neighbors(node_id))
has_telemetry = tg.create_task(store.has_packets(node_id, PortNum.TELEMETRY_APP))
packets = (Packet.from_model(p) for p in await raw_packets)
@@ -250,6 +251,7 @@ async def packet_list(request):
packet_event="packet",
trace=await trace,
neighbors=await neighbors,
has_telemetry=await has_telemetry,
),
content_type="text/html",
)
@@ -264,6 +266,7 @@ async def uplinked_list(request):
node = tg.create_task(store.get_node(node_id))
trace = tg.create_task(build_trace(node_id))
neighbors = tg.create_task(build_neighbors(node_id))
has_telemetry = tg.create_task(store.has_packets(node_id, PortNum.TELEMETRY_APP))
packets = (Packet.from_model(p) for p in await raw_packets)
@@ -277,6 +280,7 @@ async def uplinked_list(request):
packet_event="uplinked",
trace=await trace,
neighbors=await neighbors,
has_telemetry=await has_telemetry,
),
content_type="text/html",
)
@@ -437,6 +441,14 @@ async def graph_power(request):
battery.append(payload.device_metrics.battery_level)
voltage.append(payload.device_metrics.voltage)
if not date:
return web.Response(
status=404,
content_type="image/png",
)
max_time = datetime.timedelta(days=4)
newest = date[0]
for i, d in enumerate(date):