From 89e8fb4066e31e979e72d0e7596d32e505300115 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 25 Oct 2016 01:28:34 -0400 Subject: [PATCH] Configurator support for entity_picture (#4028) --- homeassistant/components/configurator.py | 11 +++++++---- .../www_static/images/logo_philips_hue.png | Bin 0 -> 17083 bytes ...ediaserver.png => logo_plex_mediaserver.png} | Bin homeassistant/components/light/hue.py | 1 + homeassistant/components/media_player/plex.py | 2 +- tests/components/test_configurator.py | 16 +++++++++++++--- 6 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 homeassistant/components/frontend/www_static/images/logo_philips_hue.png rename homeassistant/components/frontend/www_static/images/{config_plex_mediaserver.png => logo_plex_mediaserver.png} (100%) diff --git a/homeassistant/components/configurator.py b/homeassistant/components/configurator.py index 9f5cb397587..d205b45e446 100644 --- a/homeassistant/components/configurator.py +++ b/homeassistant/components/configurator.py @@ -8,7 +8,8 @@ the user has submitted configuration information. """ import logging -from homeassistant.const import EVENT_TIME_CHANGED, ATTR_FRIENDLY_NAME +from homeassistant.const import EVENT_TIME_CHANGED, ATTR_FRIENDLY_NAME, \ + ATTR_ENTITY_PICTURE from homeassistant.helpers.entity import generate_entity_id _INSTANCES = {} @@ -36,7 +37,8 @@ STATE_CONFIGURED = 'configured' # pylint: disable=too-many-arguments def request_config( hass, name, callback, description=None, description_image=None, - submit_caption=None, fields=None, link_name=None, link_url=None): + submit_caption=None, fields=None, link_name=None, link_url=None, + entity_picture=None): """Create a new request for configuration. Will return an ID to be used for sequent calls. @@ -46,7 +48,7 @@ def request_config( request_id = instance.request_config( name, callback, description, description_image, submit_caption, - fields, link_name, link_url) + fields, link_name, link_url, entity_picture) _REQUESTS[request_id] = instance @@ -104,7 +106,7 @@ class Configurator(object): def request_config( self, name, callback, description, description_image, submit_caption, - fields, link_name, link_url): + fields, link_name, link_url, entity_picture): """Setup a request for configuration.""" entity_id = generate_entity_id(ENTITY_ID_FORMAT, name, hass=self.hass) @@ -119,6 +121,7 @@ class Configurator(object): ATTR_CONFIGURE_ID: request_id, ATTR_FIELDS: fields, ATTR_FRIENDLY_NAME: name, + ATTR_ENTITY_PICTURE: entity_picture, } data.update({ diff --git a/homeassistant/components/frontend/www_static/images/logo_philips_hue.png b/homeassistant/components/frontend/www_static/images/logo_philips_hue.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4df811fa8d14f6997f7b1daf0189847048655a GIT binary patch literal 17083 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