diff --git a/homeassistant/components/assist_pipeline/pipeline.py b/homeassistant/components/assist_pipeline/pipeline.py index ff360676cf7..6c1b3ced470 100644 --- a/homeassistant/components/assist_pipeline/pipeline.py +++ b/homeassistant/components/assist_pipeline/pipeline.py @@ -1605,14 +1605,9 @@ class PipelineStorageCollectionWebsocket( """Class to expose storage collection management over websocket.""" @callback - def async_setup( - self, - hass: HomeAssistant, - *, - create_create: bool = True, - ) -> None: + def async_setup(self, hass: HomeAssistant) -> None: """Set up the websocket commands.""" - super().async_setup(hass, create_create=create_create) + super().async_setup(hass) websocket_api.async_register_command( hass, diff --git a/homeassistant/components/image_upload/__init__.py b/homeassistant/components/image_upload/__init__.py index 69e2b0f12db..59b594561f0 100644 --- a/homeassistant/components/image_upload/__init__.py +++ b/homeassistant/components/image_upload/__init__.py @@ -14,6 +14,7 @@ from aiohttp.web_request import FileField from PIL import Image, ImageOps, UnidentifiedImageError import voluptuous as vol +from homeassistant.components import websocket_api from homeassistant.components.http import KEY_HASS, HomeAssistantView from homeassistant.components.http.static import CACHE_HEADERS from homeassistant.const import CONF_ID @@ -47,13 +48,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: image_dir = pathlib.Path(hass.config.path("image")) hass.data[DOMAIN] = storage_collection = ImageStorageCollection(hass, image_dir) await storage_collection.async_load() - collection.DictStorageCollectionWebsocket( + ImageUploadStorageCollectionWebsocket( storage_collection, "image", "image", CREATE_FIELDS, UPDATE_FIELDS, - ).async_setup(hass, create_create=False) + ).async_setup(hass) hass.http.register_view(ImageUploadView) hass.http.register_view(ImageServeView(image_dir, storage_collection)) @@ -151,6 +152,19 @@ class ImageStorageCollection(collection.DictStorageCollection): await self.hass.async_add_executor_job(shutil.rmtree, self.image_dir / item_id) +class ImageUploadStorageCollectionWebsocket(collection.DictStorageCollectionWebsocket): + """Class to expose storage collection management over websocket.""" + + async def ws_create_item( + self, hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict + ) -> None: + """Create an item. + + Not supported, images are uploaded via the ImageUploadView. + """ + raise NotImplementedError + + class ImageUploadView(HomeAssistantView): """View to upload images.""" diff --git a/homeassistant/components/lovelace/resources.py b/homeassistant/components/lovelace/resources.py index c25c81e2c6f..316a31e8e9d 100644 --- a/homeassistant/components/lovelace/resources.py +++ b/homeassistant/components/lovelace/resources.py @@ -133,14 +133,9 @@ class ResourceStorageCollectionWebsocket(collection.DictStorageCollectionWebsock """Class to expose storage collection management over websocket.""" @callback - def async_setup( - self, - hass: HomeAssistant, - *, - create_create: bool = True, - ) -> None: + def async_setup(self, hass: HomeAssistant) -> None: """Set up the websocket commands.""" - super().async_setup(hass, create_create=create_create) + super().async_setup(hass) # Register lovelace/resources for backwards compatibility, remove in # Home Assistant Core 2025.1 diff --git a/homeassistant/helpers/collection.py b/homeassistant/helpers/collection.py index 1dd94d85f9a..b9993098003 100644 --- a/homeassistant/helpers/collection.py +++ b/homeassistant/helpers/collection.py @@ -536,12 +536,7 @@ class StorageCollectionWebsocket[_StorageCollectionT: StorageCollection]: return f"{self.model_name}_id" @callback - def async_setup( - self, - hass: HomeAssistant, - *, - create_create: bool = True, - ) -> None: + def async_setup(self, hass: HomeAssistant) -> None: """Set up the websocket commands.""" websocket_api.async_register_command( hass, @@ -552,20 +547,19 @@ class StorageCollectionWebsocket[_StorageCollectionT: StorageCollection]: ), ) - if create_create: - websocket_api.async_register_command( - hass, - f"{self.api_prefix}/create", - websocket_api.require_admin( - websocket_api.async_response(self.ws_create_item) - ), - websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend( - { - **self.create_schema, - vol.Required("type"): f"{self.api_prefix}/create", - } - ), - ) + websocket_api.async_register_command( + hass, + f"{self.api_prefix}/create", + websocket_api.require_admin( + websocket_api.async_response(self.ws_create_item) + ), + websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend( + { + **self.create_schema, + vol.Required("type"): f"{self.api_prefix}/create", + } + ), + ) websocket_api.async_register_command( hass,