Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/explore/controller_public_households.py: 56%
25 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
1from fastapi import APIRouter, Depends 1a
3from mealie.routes._base import controller 1a
4from mealie.routes._base.base_controllers import BasePublicGroupExploreController 1a
5from mealie.schema.household.household import HouseholdSummary 1a
6from mealie.schema.make_dependable import make_dependable 1a
7from mealie.schema.response.pagination import PaginationBase, PaginationQuery 1a
9router = APIRouter(prefix="/households") 1a
12@controller(router) 1a
13class PublicHouseholdsController(BasePublicGroupExploreController): 1a
14 @property 1a
15 def households(self): 1a
16 return self.repos.households
18 @router.get("", response_model=PaginationBase[HouseholdSummary]) 1a
19 def get_all( 1a
20 self, q: PaginationQuery = Depends(make_dependable(PaginationQuery))
21 ) -> PaginationBase[HouseholdSummary]:
22 public_filter = "(preferences.private_household = FALSE)"
23 if q.query_filter:
24 q.query_filter = f"({q.query_filter}) AND {public_filter}"
25 else:
26 q.query_filter = public_filter
28 response = self.households.page_all(pagination=q, override=HouseholdSummary)
29 response.set_pagination_guides(self.get_explore_url_path(router.url_path_for("get_all")), q.model_dump())
30 return response
32 @router.get("/{household_slug}", response_model=HouseholdSummary) 1a
33 def get_household(self, household_slug: str) -> HouseholdSummary: 1a
34 household = self.get_public_household(household_slug)
35 return household.cast(HouseholdSummary)