1 """Definition of Picnic shopping cart."""
3 from __future__
import annotations
6 from typing
import cast
12 TodoListEntityFeature,
21 from .const
import CONF_COORDINATOR, DOMAIN
22 from .coordinator
import PicnicUpdateCoordinator
23 from .services
import product_search
25 _LOGGER = logging.getLogger(__name__)
30 config_entry: ConfigEntry,
31 async_add_entities: AddEntitiesCallback,
33 """Set up the Picnic shopping cart todo platform config entry."""
34 picnic_coordinator = hass.data[DOMAIN][config_entry.entry_id][CONF_COORDINATOR]
40 """A Picnic Shopping Cart TodoListEntity."""
42 _attr_has_entity_name =
True
43 _attr_supported_features = TodoListEntityFeature.CREATE_TODO_ITEM
44 _attr_translation_key =
"shopping_cart"
48 coordinator: PicnicUpdateCoordinator,
49 config_entry: ConfigEntry,
51 """Initialize PicnicCart."""
54 entry_type=DeviceEntryType.SERVICE,
55 identifiers={(DOMAIN, cast(str, config_entry.unique_id))},
56 manufacturer=
"Picnic",
57 model=config_entry.unique_id,
63 """Get the current set of items in cart items."""
64 if self.coordinator.data
is None:
67 _LOGGER.debug(self.coordinator.data[
"cart_data"][
"items"])
71 summary=f
"{article['name']} ({article['unit_quantity']})",
72 uid=f
"{item['id']}-{article['id']}",
73 status=TodoItemStatus.NEEDS_ACTION,
75 for item
in self.coordinator.data[
"cart_data"][
"items"]
76 for article
in item[
"items"]
80 """Add item to shopping cart."""
81 product_id = await self.
hasshasshass.async_add_executor_job(
82 product_search, self.coordinator.picnic_api_client, item.summary
88 await self.
hasshasshass.async_add_executor_job(
89 self.coordinator.picnic_api_client.add_product, product_id, 1
None __init__(self, PicnicUpdateCoordinator coordinator, ConfigEntry config_entry)
list[TodoItem]|None todo_items(self)
None async_create_todo_item(self, TodoItem item)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)