diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 7bccfd5c6db..e35d2115c65 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -23,9 +23,8 @@ import homeassistant.components.group as group from homeassistant.helpers.entity import Entity from homeassistant.const import ( EVENT_COMPONENT_LOADED, CONF_LATITUDE, CONF_LONGITUDE, - CONF_TEMPERATURE_UNIT, CONF_NAME, CONF_TIME_ZONE, CONF_VISIBILITY, - CONF_DECORATE, TEMP_CELCIUS, TEMP_FAHRENHEIT, ATTR_ENTITY_PICTURE, - ATTR_HIDDEN) + CONF_TEMPERATURE_UNIT, CONF_NAME, CONF_TIME_ZONE, CONF_CUSTOMIZE, + TEMP_CELCIUS, TEMP_FAHRENHEIT) _LOGGER = logging.getLogger(__name__) @@ -209,11 +208,8 @@ def process_ha_core_config(hass, config): if key in config: setattr(hass.config, attr, config[key]) - for entity_id, hidden in config.get(CONF_VISIBILITY, {}).items(): - Entity.overwrite_attribute(entity_id, ATTR_HIDDEN, hidden == 'hide') - - for entity_id, image in config.get(CONF_DECORATE, {}).items(): - Entity.overwrite_attribute(entity_id, ATTR_ENTITY_PICTURE, image) + for entity_id, attrs in config.get(CONF_CUSTOMIZE, {}).items(): + Entity.overwrite_attribute(entity_id, attrs.keys(), attrs.values()) if CONF_TEMPERATURE_UNIT in config: unit = config[CONF_TEMPERATURE_UNIT] diff --git a/homeassistant/const.py b/homeassistant/const.py index 82727541134..b85340263f0 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -11,8 +11,7 @@ CONF_LONGITUDE = "longitude" CONF_TEMPERATURE_UNIT = "temperature_unit" CONF_NAME = "name" CONF_TIME_ZONE = "time_zone" -CONF_VISIBILITY = "visibility" -CONF_DECORATE = "decorate" +CONF_CUSTOMIZE = "customize" CONF_PLATFORM = "platform" CONF_HOST = "host" diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 9aa8aa98143..d68ad7d632f 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -11,8 +11,8 @@ from homeassistant import NoEntitySpecifiedError from homeassistant.const import ( ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT, ATTR_HIDDEN, - ATTR_ENTITY_PICTURE, STATE_ON, STATE_OFF, DEVICE_DEFAULT_NAME, - TEMP_CELCIUS, TEMP_FAHRENHEIT) + STATE_ON, STATE_OFF, DEVICE_DEFAULT_NAME, TEMP_CELCIUS, + TEMP_FAHRENHEIT) # Dict mapping entity_id to a boolean that overwrites the hidden property _OVERWRITE = defaultdict(dict) @@ -124,12 +124,12 @@ class Entity(object): if ATTR_UNIT_OF_MEASUREMENT not in attr and self.unit_of_measurement: attr[ATTR_UNIT_OF_MEASUREMENT] = self.unit_of_measurement - if _OVERWRITE[ATTR_HIDDEN].get(self.entity_id, self.hidden): - attr[ATTR_HIDDEN] = True + for attr_name, val in _OVERWRITE[self.entity_id].items(): + attr[attr_name] = val - if _OVERWRITE[ATTR_ENTITY_PICTURE].get(self.entity_id, False): - attr[ATTR_ENTITY_PICTURE] = \ - _OVERWRITE[ATTR_ENTITY_PICTURE][self.entity_id] + # remove hidden property if false so it won't show up + if not attr.get(ATTR_HIDDEN, True): + attr.pop(ATTR_HIDDEN) # Convert temperature if we detect one if attr.get(ATTR_UNIT_OF_MEASUREMENT) in (TEMP_CELCIUS, @@ -150,15 +150,18 @@ class Entity(object): return "".format(self.name, self.state) @staticmethod - def overwrite_attribute(entity_id, attr, val): + def overwrite_attribute(entity_id, attrs, vals): """ Overwrite any attribute of an entity. - Set attribute to None to remove any overwritten value in place. + This function should receive a list of attributes and a + list of values. Set attribute to None to remove any overwritten + value in place. """ - if val is None: - _OVERWRITE[attr].pop(entity_id, None) - else: - _OVERWRITE[attr][entity_id.lower()] = val + for attr, val in zip(attrs, vals): + if val is None: + _OVERWRITE[entity_id.lower()].pop(attr, None) + else: + _OVERWRITE[entity_id.lower()][attr] = val class ToggleEntity(Entity): diff --git a/tests/test_helper_entity.py b/tests/test_helper_entity.py index e418b26e4b6..14559ded39a 100644 --- a/tests/test_helper_entity.py +++ b/tests/test_helper_entity.py @@ -26,7 +26,7 @@ class TestHelpersEntity(unittest.TestCase): """ Stop down stuff we started. """ self.hass.stop() entity.Entity.overwrite_attribute(self.entity.entity_id, - ATTR_HIDDEN, None) + [ATTR_HIDDEN], [None]) def test_default_hidden_not_in_attributes(self): """ Test that the default hidden property is set to False. """ @@ -45,7 +45,7 @@ class TestHelpersEntity(unittest.TestCase): def test_overwriting_hidden_property_to_true(self): """ Test we can overwrite hidden property to True. """ entity.Entity.overwrite_attribute(self.entity.entity_id, - ATTR_HIDDEN, True) + [ATTR_HIDDEN], [True]) self.entity.update_ha_state() state = self.hass.states.get(self.entity.entity_id) @@ -54,7 +54,7 @@ class TestHelpersEntity(unittest.TestCase): def test_overwriting_hidden_property_to_false(self): """ Test we can overwrite hidden property to True. """ entity.Entity.overwrite_attribute(self.entity.entity_id, - ATTR_HIDDEN, False) + [ATTR_HIDDEN], [False]) self.entity.hidden = True self.entity.update_ha_state()