Coverage for opt/mealie/lib/python3.12/site-packages/mealie/services/group_services/labels_service.py: 89%
26 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 15:32 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 15:32 +0000
1from mealie.repos.all_repositories import get_repositories 1b
2from mealie.repos.repository_factory import AllRepositories 1b
3from mealie.schema.household.group_shopping_list import ShoppingListMultiPurposeLabelCreate 1b
4from mealie.schema.labels.multi_purpose_label import ( 1b
5 MultiPurposeLabelCreate,
6 MultiPurposeLabelOut,
7 MultiPurposeLabelSave,
8)
9from mealie.schema.response.pagination import PaginationQuery 1b
12class MultiPurposeLabelService: 1b
13 def __init__(self, repos: AllRepositories): 1b
14 self.repos = repos
15 self.labels = repos.group_multi_purpose_labels
17 def _update_shopping_list_label_references(self, new_labels: list[MultiPurposeLabelOut]) -> None: 1b
18 # remove the households filter so we get all lists
19 household_repos = get_repositories(self.repos.session, group_id=self.repos.group_id, household_id=None)
20 shopping_lists_repo = household_repos.group_shopping_lists
21 shopping_list_multi_purpose_labels_repo = household_repos.shopping_list_multi_purpose_labels
23 shopping_lists = shopping_lists_repo.page_all(PaginationQuery(page=1, per_page=-1))
24 new_shopping_list_labels: list[ShoppingListMultiPurposeLabelCreate] = []
25 for label in new_labels:
26 new_shopping_list_labels.extend(
27 [
28 ShoppingListMultiPurposeLabelCreate(
29 shopping_list_id=shopping_list.id, label_id=label.id, position=len(shopping_list.label_settings)
30 )
31 for shopping_list in shopping_lists.items
32 ]
33 )
35 shopping_list_multi_purpose_labels_repo.create_many(new_shopping_list_labels)
37 def create_one(self, data: MultiPurposeLabelCreate) -> MultiPurposeLabelOut: 1b
38 label = self.labels.create(data.cast(MultiPurposeLabelSave, group_id=self.repos.group_id))
39 self._update_shopping_list_label_references([label])
40 return label
42 def create_many(self, data: list[MultiPurposeLabelCreate]) -> list[MultiPurposeLabelOut]: 1b
43 labels = self.labels.create_many(
44 [label.cast(MultiPurposeLabelSave, group_id=self.repos.group_id) for label in data]
45 )
46 self._update_shopping_list_label_references(labels)
47 return labels