Skip to content

Bug: asset status page crashed on old sensors_to_show format. #2102

@Flix6x

Description

@Flix6x

The asset status page is broken on main for some assets (it works on 0.31.x) for assets with sensors_to_show. This is currently a yet unreleased regression on main, risking to seep into v0.32.0. I am not sure which formats of sensors_to_show are affected, but my hunch is a regression from #1904 is at play here (possibly related: #2017 (comment)).


Traceback:

server-1    | [FLEXMEASURES][2026-04-13 12:59:12,634] ERROR: KeyError - URL was: /assets/634/status - "'sensors'" [occurred at /app/flexmeasures/data/services/sensors.py (in get_asset_sensors_metadata, line 300)
server-1    | Traceback (most recent call last):
server-1    |   File "/usr/local/lib/python3.12/dist-packages/flask/app.py", line 917, in full_dispatch_request
server-1    |     rv = self.dispatch_request()
server-1    |          ^^^^^^^^^^^^^^^^^^^^^^^
server-1    |   File "/usr/local/lib/python3.12/dist-packages/flask/app.py", line 902, in dispatch_request
server-1    |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
server-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1    |   File "/usr/local/lib/python3.12/dist-packages/flask_classful.py", line 303, in proxy
server-1    |     response = view(**request.view_args)
server-1    |                ^^^^^^^^^^^^^^^^^^^^^^^^^
server-1    |   File "/usr/local/lib/python3.12/dist-packages/flask_classful.py", line 271, in inner
server-1    |     return fn(*args, **kwargs)
server-1    |            ^^^^^^^^^^^^^^^^^^^
server-1    |   File "/usr/local/lib/python3.12/dist-packages/flask_login/utils.py", line 290, in decorated_view
server-1    |     return current_app.ensure_sync(func)(*args, **kwargs)
server-1    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1    |   File "/app/flexmeasures/ui/views/assets/views.py", line 226, in status
server-1    |     status_data = get_asset_sensors_metadata(asset)
server-1    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1    |   File "/app/flexmeasures/data/services/sensors.py", line 300, in get_asset_sensors_metadata
server-1    |     sensor["sensors"] for sensor in validated_asset_sensors if sensor is not None
server-1    |     ~~~~~~^^^^^^^^^^^
server-1    | KeyError: 'sensors'

Relevant data:

 id  |  name  | latitude | longitude | generic_asset_type_id | account_id | attributes | parent_asset_id |                                        sensors_to_show                                         |             flex_context             |           flex_model           | sensors_to_show_as_kpis | external_id 
-----+--------+----------+-----------+-----------------------+------------+------------+-----------------+------------------------------------------------------------------------------------------------+--------------------------------------+--------------------------------+-------------------------+-------------
 634 | My CEM |        0 |         0 |                     6 |          1 | {}         |                 | [{"title": "State of charge", "sensors": [713, 714, 711]}, {"title": "Prices", "sensor": 709}] | {"inflexible-device-sensors": [717]} | {"power-capacity": "17250 VA"} | []                      | 
(1 row)

Metadata

Metadata

Assignees

Labels

UIbugSomething isn't working

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions