Skip to content

Commit

Permalink
Refactor duplicate host check in homeworks config flow (home-assistan…
Browse files Browse the repository at this point in the history
  • Loading branch information
epenet authored Oct 18, 2024
1 parent a7b5e43 commit 8a4d72e
Showing 1 changed file with 9 additions and 13 deletions.
22 changes: 9 additions & 13 deletions homeassistant/components/homeworks/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -558,23 +558,19 @@ class HomeworksConfigFlowHandler(ConfigFlow, domain=DOMAIN):
"""Config flow for Lutron Homeworks."""

async def _validate_edit_controller(
self, user_input: dict[str, Any]
self, user_input: dict[str, Any], reconfigure_entry: ConfigEntry
) -> dict[str, Any]:
"""Validate controller setup."""
_validate_credentials(user_input)
user_input[CONF_PORT] = int(user_input[CONF_PORT])

our_entry = self.hass.config_entries.async_get_entry(self.context["entry_id"])
assert our_entry
other_entries = self._async_current_entries()
for entry in other_entries:
if entry.entry_id == our_entry.entry_id:
continue
if (
user_input[CONF_HOST] == entry.options[CONF_HOST]
and user_input[CONF_PORT] == entry.options[CONF_PORT]
):
raise SchemaFlowError("duplicated_host_port")
if any(
entry.entry_id != reconfigure_entry.entry_id
and user_input[CONF_HOST] == entry.options[CONF_HOST]
and user_input[CONF_PORT] == entry.options[CONF_PORT]
for entry in self._async_current_entries()
):
raise SchemaFlowError("duplicated_host_port")

await _try_connection(user_input)
return user_input
Expand All @@ -600,7 +596,7 @@ async def async_step_reconfigure(
CONF_PASSWORD: user_input.get(CONF_PASSWORD),
}
try:
await self._validate_edit_controller(user_input)
await self._validate_edit_controller(user_input, reconfigure_entry)
except SchemaFlowError as err:
errors["base"] = str(err)
else:
Expand Down

0 comments on commit 8a4d72e

Please sign in to comment.