From c888e65f11cbe9aff35afb73c84b6a7200df3892 Mon Sep 17 00:00:00 2001 From: Peter Epley Date: Sun, 10 Mar 2019 13:14:45 -0400 Subject: [PATCH] Add custom holidays to workday sensor (#21718) * Add custom holidays to workday sensor * correcting copy/paste errors * resolve block comment and add default * resolve line too long * fixed handling of no custom holidays * hound fixes * rerun Travis * @fabaff requested changes * spaces v tabs * Fix validation --- homeassistant/components/binary_sensor/workday.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/homeassistant/components/binary_sensor/workday.py b/homeassistant/components/binary_sensor/workday.py index 551ca835e78..6b547927af4 100644 --- a/homeassistant/components/binary_sensor/workday.py +++ b/homeassistant/components/binary_sensor/workday.py @@ -42,6 +42,7 @@ CONF_PROVINCE = 'province' CONF_WORKDAYS = 'workdays' CONF_EXCLUDES = 'excludes' CONF_OFFSET = 'days_offset' +CONF_ADD_HOLIDAYS = 'add_holidays' # By default, Monday - Friday are workdays DEFAULT_WORKDAYS = ['mon', 'tue', 'wed', 'thu', 'fri'] @@ -59,6 +60,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PROVINCE): cv.string, vol.Optional(CONF_WORKDAYS, default=DEFAULT_WORKDAYS): vol.All(cv.ensure_list, [vol.In(ALLOWED_DAYS)]), + vol.Optional(CONF_ADD_HOLIDAYS): vol.All(cv.ensure_list, [cv.string]), }) @@ -72,6 +74,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): workdays = config.get(CONF_WORKDAYS) excludes = config.get(CONF_EXCLUDES) days_offset = config.get(CONF_OFFSET) + add_holidays = config.get(CONF_ADD_HOLIDAYS) year = (get_date(datetime.today()) + timedelta(days=days_offset)).year obj_holidays = getattr(holidays, country)(years=year) @@ -92,6 +95,12 @@ def setup_platform(hass, config, add_entities, discovery_info=None): province, country) return + # Add custom holidays + try: + obj_holidays.append(add_holidays) + except TypeError: + _LOGGER.debug("No custom holidays or invalid holidays") + _LOGGER.debug("Found the following holidays for your configuration:") for date, name in sorted(obj_holidays.items()): _LOGGER.debug("%s %s", date, name)