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.15.2, created at 2026-10-07 03:04 +0000

1from fastapi import APIRouter, Depends 

2 

3from mealie.routes._base import controller 

4from mealie.routes._base.base_controllers import BasePublicGroupExploreController 

5from mealie.schema.household.household import HouseholdSummary 

6from mealie.schema.make_dependable import make_dependable 

7from mealie.schema.response.pagination import PaginationBase, PaginationQuery 

8 

9router = APIRouter(prefix="/households") 

10 

11 

12@controller(router) 

13class PublicHouseholdsController(BasePublicGroupExploreController): 

14 @property 

15 def households(self): 

16 return self.repos.households 

17 

18 @router.get("", response_model=PaginationBase[HouseholdSummary]) 

19 def get_all( 

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 

27 

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 

31 

32 @router.get("/{household_slug}", response_model=HouseholdSummary) 

33 def get_household(self, household_slug: str) -> HouseholdSummary: 

34 household = self.get_public_household(household_slug) 

35 return household.cast(HouseholdSummary)