parent
3b938e592f
commit
98710e6c91
|
@ -11,7 +11,7 @@ from bring_api.exceptions import (
|
||||||
BringParseException,
|
BringParseException,
|
||||||
BringRequestException,
|
BringRequestException,
|
||||||
)
|
)
|
||||||
from bring_api.types import BringList, BringPurchase
|
from bring_api.types import BringItemsResponse, BringList
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
@ -22,12 +22,9 @@ from .const import DOMAIN
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class BringData(BringList):
|
class BringData(BringList, BringItemsResponse):
|
||||||
"""Coordinator data class."""
|
"""Coordinator data class."""
|
||||||
|
|
||||||
purchase_items: list[BringPurchase]
|
|
||||||
recently_items: list[BringPurchase]
|
|
||||||
|
|
||||||
|
|
||||||
class BringDataUpdateCoordinator(DataUpdateCoordinator[dict[str, BringData]]):
|
class BringDataUpdateCoordinator(DataUpdateCoordinator[dict[str, BringData]]):
|
||||||
"""A Bring Data Update Coordinator."""
|
"""A Bring Data Update Coordinator."""
|
||||||
|
@ -56,7 +53,7 @@ class BringDataUpdateCoordinator(DataUpdateCoordinator[dict[str, BringData]]):
|
||||||
"Unable to retrieve data from bring, authentication failed"
|
"Unable to retrieve data from bring, authentication failed"
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
list_dict = {}
|
list_dict: dict[str, BringData] = {}
|
||||||
for lst in lists_response["lists"]:
|
for lst in lists_response["lists"]:
|
||||||
try:
|
try:
|
||||||
items = await self.bring.get_list(lst["listUuid"])
|
items = await self.bring.get_list(lst["listUuid"])
|
||||||
|
@ -66,8 +63,7 @@ class BringDataUpdateCoordinator(DataUpdateCoordinator[dict[str, BringData]]):
|
||||||
) from e
|
) from e
|
||||||
except BringParseException as e:
|
except BringParseException as e:
|
||||||
raise UpdateFailed("Unable to parse response from bring") from e
|
raise UpdateFailed("Unable to parse response from bring") from e
|
||||||
lst["purchase_items"] = items["purchase"]
|
else:
|
||||||
lst["recently_items"] = items["recently"]
|
list_dict[lst["listUuid"]] = BringData(**lst, **items)
|
||||||
list_dict[lst["listUuid"]] = lst
|
|
||||||
|
|
||||||
return list_dict
|
return list_dict
|
||||||
|
|
|
@ -107,7 +107,7 @@ class BringTodoListEntity(
|
||||||
description=item["specification"] or "",
|
description=item["specification"] or "",
|
||||||
status=TodoItemStatus.NEEDS_ACTION,
|
status=TodoItemStatus.NEEDS_ACTION,
|
||||||
)
|
)
|
||||||
for item in self.bring_list["purchase_items"]
|
for item in self.bring_list["purchase"]
|
||||||
),
|
),
|
||||||
*(
|
*(
|
||||||
TodoItem(
|
TodoItem(
|
||||||
|
@ -116,7 +116,7 @@ class BringTodoListEntity(
|
||||||
description=item["specification"] or "",
|
description=item["specification"] or "",
|
||||||
status=TodoItemStatus.COMPLETED,
|
status=TodoItemStatus.COMPLETED,
|
||||||
)
|
)
|
||||||
for item in self.bring_list["recently_items"]
|
for item in self.bring_list["recently"]
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ class BringTodoListEntity(
|
||||||
try:
|
try:
|
||||||
await self.coordinator.bring.save_item(
|
await self.coordinator.bring.save_item(
|
||||||
self.bring_list["listUuid"],
|
self.bring_list["listUuid"],
|
||||||
item.summary,
|
item.summary or "",
|
||||||
item.description or "",
|
item.description or "",
|
||||||
str(uuid.uuid4()),
|
str(uuid.uuid4()),
|
||||||
)
|
)
|
||||||
|
@ -165,12 +165,12 @@ class BringTodoListEntity(
|
||||||
bring_list = self.bring_list
|
bring_list = self.bring_list
|
||||||
|
|
||||||
bring_purchase_item = next(
|
bring_purchase_item = next(
|
||||||
(i for i in bring_list["purchase_items"] if i["uuid"] == item.uid),
|
(i for i in bring_list["purchase"] if i["uuid"] == item.uid),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
|
|
||||||
bring_recently_item = next(
|
bring_recently_item = next(
|
||||||
(i for i in bring_list["recently_items"] if i["uuid"] == item.uid),
|
(i for i in bring_list["recently"] if i["uuid"] == item.uid),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -185,8 +185,8 @@ class BringTodoListEntity(
|
||||||
await self.coordinator.bring.batch_update_list(
|
await self.coordinator.bring.batch_update_list(
|
||||||
bring_list["listUuid"],
|
bring_list["listUuid"],
|
||||||
BringItem(
|
BringItem(
|
||||||
itemId=item.summary,
|
itemId=item.summary or "",
|
||||||
spec=item.description,
|
spec=item.description or "",
|
||||||
uuid=item.uid,
|
uuid=item.uid,
|
||||||
),
|
),
|
||||||
BringItemOperation.ADD
|
BringItemOperation.ADD
|
||||||
|
@ -206,13 +206,13 @@ class BringTodoListEntity(
|
||||||
[
|
[
|
||||||
BringItem(
|
BringItem(
|
||||||
itemId=current_item["itemId"],
|
itemId=current_item["itemId"],
|
||||||
spec=item.description,
|
spec=item.description or "",
|
||||||
uuid=item.uid,
|
uuid=item.uid,
|
||||||
operation=BringItemOperation.REMOVE,
|
operation=BringItemOperation.REMOVE,
|
||||||
),
|
),
|
||||||
BringItem(
|
BringItem(
|
||||||
itemId=item.summary,
|
itemId=item.summary or "",
|
||||||
spec=item.description,
|
spec=item.description or "",
|
||||||
uuid=str(uuid.uuid4()),
|
uuid=str(uuid.uuid4()),
|
||||||
operation=BringItemOperation.ADD
|
operation=BringItemOperation.ADD
|
||||||
if item.status == TodoItemStatus.NEEDS_ACTION
|
if item.status == TodoItemStatus.NEEDS_ACTION
|
||||||
|
|
Loading…
Reference in New Issue