Home Assistant Unofficial Reference 2024.12.1
repairs.py
Go to the documentation of this file.
1 """Repairs for Z-Wave JS."""
2 
3 from __future__ import annotations
4 
5 from homeassistant import data_entry_flow
6 from homeassistant.components.repairs import ConfirmRepairFlow, RepairsFlow
7 from homeassistant.core import HomeAssistant
8 from homeassistant.helpers import issue_registry as ir
9 
10 from .const import DOMAIN
11 from .helpers import async_get_node_from_device_id
12 
13 
15  """Handler for an issue fixing flow."""
16 
17  def __init__(self, data: dict[str, str]) -> None:
18  """Initialize."""
19  self.description_placeholders: dict[str, str] = {
20  "device_name": data["device_name"]
21  }
22  self.device_id: str = data["device_id"]
23 
24  async def async_step_init(
25  self, user_input: dict[str, str] | None = None
27  """Handle the first step of a fix flow."""
28  return self.async_show_menuasync_show_menu(
29  menu_options=["confirm", "ignore"],
30  description_placeholders=self.description_placeholders,
31  )
32 
33  async def async_step_confirm(
34  self, user_input: dict[str, str] | None = None
36  """Handle the confirm step of a fix flow."""
37  try:
38  node = async_get_node_from_device_id(self.hass, self.device_id)
39  except ValueError:
40  return self.async_abortasync_abort(
41  reason="cannot_connect",
42  description_placeholders=self.description_placeholders,
43  )
44  self.hass.async_create_task(node.async_refresh_info())
45  return self.async_create_entryasync_create_entry(title="", data={})
46 
47  async def async_step_ignore(
48  self, user_input: dict[str, str] | None = None
50  """Handle the ignore step of a fix flow."""
51  ir.async_get(self.hass).async_ignore(
52  DOMAIN, f"device_config_file_changed.{self.device_id}", True
53  )
54  return self.async_abortasync_abort(
55  reason="issue_ignored",
56  description_placeholders=self.description_placeholders,
57  )
58 
59 
61  hass: HomeAssistant, issue_id: str, data: dict[str, str] | None
62 ) -> RepairsFlow:
63  """Create flow."""
64 
65  if issue_id.split(".")[0] == "device_config_file_changed":
66  assert data
67  return DeviceConfigFileChangedFlow(data)
68  return ConfirmRepairFlow()
data_entry_flow.FlowResult async_step_confirm(self, dict[str, str]|None user_input=None)
Definition: repairs.py:35
data_entry_flow.FlowResult async_step_ignore(self, dict[str, str]|None user_input=None)
Definition: repairs.py:49
data_entry_flow.FlowResult async_step_init(self, dict[str, str]|None user_input=None)
Definition: repairs.py:26
_FlowResultT async_show_menu(self, *str|None step_id=None, Container[str] menu_options, Mapping[str, str]|None description_placeholders=None)
_FlowResultT async_create_entry(self, *str|None title=None, Mapping[str, Any] data, str|None description=None, Mapping[str, str]|None description_placeholders=None)
_FlowResultT async_abort(self, *str reason, Mapping[str, str]|None description_placeholders=None)
ZwaveNode async_get_node_from_device_id(HomeAssistant hass, str device_id, dr.DeviceRegistry|None dev_reg=None)
Definition: helpers.py:253
RepairsFlow async_create_fix_flow(HomeAssistant hass, str issue_id, dict[str, str]|None data)
Definition: repairs.py:62