From 7a78f87fa6a08d71ee880e7d3985221a39788ec6 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Wed, 22 Jan 2025 15:17:57 +0100 Subject: [PATCH] Clean up attributes of Overseerr event entity (#136251) --- homeassistant/components/overseerr/event.py | 19 ++++++++++++++++++- .../overseerr/snapshots/test_event.ambr | 15 ++++++--------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/overseerr/event.py b/homeassistant/components/overseerr/event.py index b1b2efd6ec5..9dbfe37080b 100644 --- a/homeassistant/components/overseerr/event.py +++ b/homeassistant/components/overseerr/event.py @@ -55,6 +55,8 @@ async def async_setup_entry( class OverseerrEvent(OverseerrEntity, EventEntity): """Defines a Overseerr event entity.""" + entity_description: OverseerrEventEntityDescription + def __init__( self, coordinator: OverseerrCoordinator, @@ -76,7 +78,11 @@ class OverseerrEvent(OverseerrEntity, EventEntity): """Handle incoming event.""" event_type = event["notification_type"].lower() if event_type.split("_")[0] == self.entity_description.key: - self._trigger_event(event_type[6:], event) + self._attr_entity_picture = event.get("image") + self._trigger_event( + event_type[6:], + parse_event(event, self.entity_description.nullable_fields), + ) self.async_write_ha_state() @callback @@ -94,6 +100,17 @@ class OverseerrEvent(OverseerrEntity, EventEntity): def parse_event(event: dict[str, Any], nullable_fields: list[str]) -> dict[str, Any]: """Parse event.""" event.pop("notification_type") + event.pop("image") for field in nullable_fields: event.pop(field) + if (media := event.get("media")) is not None: + for field in ("status", "status4k"): + media[field] = media[field].lower() + for field in ("tmdb_id", "tvdb_id"): + if (value := media.get(field)) != "": + media[field] = int(value) + else: + media[field] = None + if (request := event.get("request")) is not None: + request["request_id"] = int(request["request_id"]) return event diff --git a/tests/components/overseerr/snapshots/test_event.ambr b/tests/components/overseerr/snapshots/test_event.ambr index 9bf23efb8f6..1002bc4cdad 100644 --- a/tests/components/overseerr/snapshots/test_event.ambr +++ b/tests/components/overseerr/snapshots/test_event.ambr @@ -44,7 +44,7 @@ # name: test_entities[event.overseerr_last_media_event-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'comment': None, + 'entity_picture': 'https://image.tmdb.org/t/p/w600_and_h900_bestv2/something.jpg', 'event_type': 'auto_approved', 'event_types': list([ 'pending', @@ -55,19 +55,16 @@ 'auto_approved', ]), 'friendly_name': 'Overseerr Last media event', - 'image': 'https://image.tmdb.org/t/p/w600_and_h900_bestv2/something.jpg', - 'issue': None, 'media': dict({ 'media_type': 'movie', - 'status': 'PENDING', - 'status4k': 'UNKNOWN', - 'tmdb_id': '123', - 'tvdb_id': '', + 'status': 'pending', + 'status4k': 'unknown', + 'tmdb_id': 123, + 'tvdb_id': None, }), 'message': 'Here is an interesting Linux ISO that was automatically approved.', - 'notification_type': 'MEDIA_AUTO_APPROVED', 'request': dict({ - 'request_id': '16', + 'request_id': 16, 'requested_by_avatar': 'https://plex.tv/users/abc/avatar?c=123', 'requested_by_email': 'my@email.com', 'requested_by_settings_discord_id': '123',