From 26230f49d81ac6a0bc5398b41bb5a83ffb52cbc0 Mon Sep 17 00:00:00 2001 From: Eyesoft Date: Wed, 14 Sep 2022 12:51:28 +0200 Subject: [PATCH] Added date formatting as config option --- custom_components/min_renovasjon/__init__.py | 16 +++++++--------- custom_components/min_renovasjon/config_flow.py | 8 ++++++-- custom_components/min_renovasjon/const.py | 1 - custom_components/min_renovasjon/sensor.py | 12 ++++++------ custom_components/min_renovasjon/strings.json | 5 +++-- .../min_renovasjon/translations/en.json | 5 +++-- .../min_renovasjon/translations/no.json | 5 +++-- 7 files changed, 28 insertions(+), 24 deletions(-) diff --git a/custom_components/min_renovasjon/__init__.py b/custom_components/min_renovasjon/__init__.py index 1d21578..9b27615 100644 --- a/custom_components/min_renovasjon/__init__.py +++ b/custom_components/min_renovasjon/__init__.py @@ -49,8 +49,7 @@ async def async_setup(hass: HomeAssistant, config: dict): street_code = config[DOMAIN][CONF_STREET_CODE] house_no = config[DOMAIN][CONF_HOUSE_NO] county_id = config[DOMAIN][CONF_COUNTY_ID] - #date_format = config[DOMAIN][CONF_DATE_FORMAT] - date_format = None + date_format = config[DOMAIN][CONF_DATE_FORMAT] min_renovasjon = MinRenovasjon(hass, street_name, street_code, house_no, county_id, date_format) hass.data[DOMAIN]["data"] = min_renovasjon @@ -65,8 +64,8 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b street_code = config_entry.data.get(CONF_STREET_CODE, "") house_no = config_entry.data.get(CONF_HOUSE_NO, "") county_id = config_entry.data.get(CONF_COUNTY_ID, "") - #date_format = config_entry.data.get(CONF_DATE_FORMAT, "") - date_format = None + date_format = config_entry.options.get(CONF_DATE_FORMAT, DEFAULT_DATE_FORMAT) + min_renovasjon = MinRenovasjon(hass, street_name, street_code, house_no, county_id, date_format) hass.data[DOMAIN]["data"] = min_renovasjon @@ -84,7 +83,7 @@ def __init__(self, hass, gatenavn, gatekode, husnr, kommunenr, date_format): self.gatekode = gatekode self.husnr = husnr self._kommunenr = kommunenr - #self._date_format = date_format + self._date_format = date_format @staticmethod def _url_encode(string): @@ -228,7 +227,6 @@ def calender_list(self): return self._hass.data[DOMAIN]["calendar_list"] def format_date(self, date): - return date - #if self._date_format == "None": - # return date - #return date.strftime(self._date_format) + if self._date_format == "None": + return date + return date.strftime(self._date_format) diff --git a/custom_components/min_renovasjon/config_flow.py b/custom_components/min_renovasjon/config_flow.py index 930a055..4200d45 100644 --- a/custom_components/min_renovasjon/config_flow.py +++ b/custom_components/min_renovasjon/config_flow.py @@ -187,11 +187,15 @@ async def async_step_init(self, user_input=None): """Manage the options.""" if user_input is not None: + if "date_format" not in user_input: + user_input["date_format"] = "None" + self.options.update(user_input) return self.async_create_entry(title=DOMAIN, data=self.options) options = self.config_entry.options fraction_ids = options.get(CONF_FRACTION_IDS, []) + date_format = options.get(CONF_DATE_FORMAT, DEFAULT_DATE_FORMAT) municipality_code = self.config_entry.data.get(CONF_COUNTY_ID, "") fraction_list = await self._get_fractions(municipality_code) @@ -204,7 +208,8 @@ async def async_step_init(self, user_input=None): step_id="init", data_schema=vol.Schema( { - vol.Required(CONF_FRACTION_IDS, default=fraction_ids): cv.multi_select(fractions) + vol.Required(CONF_FRACTION_IDS, default=fraction_ids): cv.multi_select(fractions), + vol.Optional(CONF_DATE_FORMAT, description={"suggested_value": date_format}): cv.string } ) ) @@ -220,4 +225,3 @@ async def _get_fractions(self, municipality_code) -> Dict: return json.loads(response.decode("UTF-8")) return None - diff --git a/custom_components/min_renovasjon/const.py b/custom_components/min_renovasjon/const.py index c41fc2d..921f96c 100644 --- a/custom_components/min_renovasjon/const.py +++ b/custom_components/min_renovasjon/const.py @@ -15,4 +15,3 @@ ADDRESS_LOOKUP_URL = "https://ws.geonorge.no/adresser/v1/sok?" APP_CUSTOMERS_URL = "https://www.webatlas.no/wacloud/servicerepository/CatalogueService.svc/json/GetRegisteredAppCustomers" KOMTEK_API_BASE_URL = "https://norkartrenovasjon.azurewebsites.net/proxyserver.ashx" - diff --git a/custom_components/min_renovasjon/sensor.py b/custom_components/min_renovasjon/sensor.py index 1441672..08344bf 100644 --- a/custom_components/min_renovasjon/sensor.py +++ b/custom_components/min_renovasjon/sensor.py @@ -91,7 +91,7 @@ def get_name(self): @property def state(self): """Return the state/date of the fraction.""" - return self._state + return self._min_renovasjon.format_date(self._state) async def async_update(self): """Update calendar.""" @@ -103,15 +103,15 @@ async def async_update(self): pickupDate = fraction[3].date() today = date.today() diff = pickupDate - today + self._state = fraction[3] + self._attributes['days_to_pickup'] = diff.days - self._attributes['formatted_date'] = self._min_renovasjon.format_date(fraction[3]) + self._attributes['formatted_date'] = self._min_renovasjon.format_date(self._state) + self._attributes['raw_date'] = self._state self._attributes['date_next_pickup'] = fraction[4] self._attributes['fraction_id'] = self._fraction_id self._attributes['fraction_name'] = fraction[1] self._attributes['fraction_icon'] = fraction[2] - - self._state = fraction[3] - + async def async_added_to_hass(self): await self.async_update() - diff --git a/custom_components/min_renovasjon/strings.json b/custom_components/min_renovasjon/strings.json index 79da461..b24cac3 100644 --- a/custom_components/min_renovasjon/strings.json +++ b/custom_components/min_renovasjon/strings.json @@ -26,9 +26,10 @@ "title": "Min Renovasjon fractions", "description": "Select fractions from which sensors are to be made.", "data": { - "fraction_ids": "Fractions" + "fraction_ids": "Fractions", + "date_format": "Date formatting" } } } } -} +} \ No newline at end of file diff --git a/custom_components/min_renovasjon/translations/en.json b/custom_components/min_renovasjon/translations/en.json index 79da461..b24cac3 100644 --- a/custom_components/min_renovasjon/translations/en.json +++ b/custom_components/min_renovasjon/translations/en.json @@ -26,9 +26,10 @@ "title": "Min Renovasjon fractions", "description": "Select fractions from which sensors are to be made.", "data": { - "fraction_ids": "Fractions" + "fraction_ids": "Fractions", + "date_format": "Date formatting" } } } } -} +} \ No newline at end of file diff --git a/custom_components/min_renovasjon/translations/no.json b/custom_components/min_renovasjon/translations/no.json index e93b4f2..9c38586 100644 --- a/custom_components/min_renovasjon/translations/no.json +++ b/custom_components/min_renovasjon/translations/no.json @@ -26,9 +26,10 @@ "title": "Min Renovasjon avfallstyper", "description": "Velg de avfallstypene det skal lages sensor av.", "data": { - "fraction_ids": "Avfallstyper" + "fraction_ids": "Avfallstyper", + "date_format": "Datoformatering" } } } } -} +} \ No newline at end of file