Files
2026-07-20 22:52:35 -04:00

52 lines
1.6 KiB
Python

"""Spook - Your homie."""
from __future__ import annotations
from typing import TYPE_CHECKING
import voluptuous as vol
from homeassistant.components.repairs import DOMAIN as REPAIRS_DOMAIN
from homeassistant.helpers import config_validation as cv, issue_registry as ir
from homeassistant.util.ulid import ulid
from ....const import DOMAIN
from ....services import AbstractSpookService
if TYPE_CHECKING:
from homeassistant.core import ServiceCall
class SpookService(AbstractSpookService):
"""Home Assistant Repairs service to create your own issues."""
domain = REPAIRS_DOMAIN
service = "create"
schema = {
vol.Required("title"): cv.string,
vol.Required("description"): cv.string,
vol.Optional("issue_id", default=ulid): cv.string,
vol.Optional("domain", default=DOMAIN): cv.string,
vol.Optional("severity", default=ir.IssueSeverity.WARNING): vol.Coerce(
ir.IssueSeverity,
),
vol.Optional("persistent", default=False): cv.boolean,
}
async def async_handle_service(self, call: ServiceCall) -> None:
"""Handle the service call."""
ir.async_create_issue(
self.hass,
domain=DOMAIN,
is_fixable=True,
is_persistent=call.data["persistent"],
issue_domain=call.data["domain"],
issue_id=f"user_{call.data['issue_id']}",
severity=call.data["severity"],
translation_key="user_issue",
translation_placeholders={
"title": call.data["title"],
"description": call.data["description"],
},
)