From cca661574dbebbb58cbf46133d24e2227d1a7579 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 4 Nov 2020 05:34:07 -1000 Subject: [PATCH] Fix webhook when doorbird not yet setup (#42657) --- homeassistant/components/doorbird/util.py | 31 ++++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/doorbird/util.py b/homeassistant/components/doorbird/util.py index 7db9063580d..55974bc1866 100644 --- a/homeassistant/components/doorbird/util.py +++ b/homeassistant/components/doorbird/util.py @@ -11,9 +11,32 @@ def get_mac_address_from_doorstation_info(doorstation_info): def get_doorstation_by_token(hass, token): - """Get doorstation by slug.""" - for config_entry_id in hass.data[DOMAIN]: - doorstation = hass.data[DOMAIN][config_entry_id][DOOR_STATION] + """Get doorstation by token.""" + return _get_doorstation_by_attr(hass, "token", token) - if token == doorstation.token: + +def get_doorstation_by_slug(hass, slug): + """Get doorstation by slug.""" + return _get_doorstation_by_attr(hass, "slug", slug) + + +def _get_doorstation_by_attr(hass, attr, val): + for entry in hass.data[DOMAIN].values(): + if DOOR_STATION not in entry: + continue + + doorstation = entry[DOOR_STATION] + + if getattr(doorstation, attr) == val: return doorstation + + return None + + +def get_all_doorstations(hass): + """Get all doorstations.""" + return [ + entry[DOOR_STATION] + for entry in hass.data[DOMAIN].values() + if DOOR_STATION in entry + ]