mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-29 13:27:09 -05:00
feat: Move "on hand" and "last made" to household (#4616)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
This commit is contained in:
@@ -5,7 +5,7 @@ from fastapi import Depends, HTTPException, status
|
||||
from mealie.routes._base.base_controllers import BaseUserController
|
||||
from mealie.routes._base.controller import controller
|
||||
from mealie.routes._base.routers import UserAPIRouter
|
||||
from mealie.schema.household.household import HouseholdInDB
|
||||
from mealie.schema.household import HouseholdInDB, HouseholdRecipeSummary
|
||||
from mealie.schema.household.household_permissions import SetPermissions
|
||||
from mealie.schema.household.household_preferences import ReadHouseholdPreferences, UpdateHouseholdPreferences
|
||||
from mealie.schema.household.household_statistics import HouseholdStatistics
|
||||
@@ -27,6 +27,15 @@ class HouseholdSelfServiceController(BaseUserController):
|
||||
"""Returns the Household Data for the Current User"""
|
||||
return self.household
|
||||
|
||||
@router.get("/self/recipes/{recipe_slug}", response_model=HouseholdRecipeSummary)
|
||||
def get_household_recipe(self, recipe_slug: str):
|
||||
"""Returns recipe data for the current household"""
|
||||
response = self.service.get_household_recipe(recipe_slug)
|
||||
if not response:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, detail="Recipe not found")
|
||||
|
||||
return response
|
||||
|
||||
@router.get("/members", response_model=PaginationBase[UserOut])
|
||||
def get_household_members(self, q: PaginationQuery = Depends()):
|
||||
"""Returns all users belonging to the current household"""
|
||||
|
||||
@@ -53,7 +53,9 @@ class GroupMealplanController(BaseCrudController):
|
||||
"""
|
||||
|
||||
rules = self.repos.group_meal_plan_rules.get_rules(PlanRulesDay.from_date(plan_date), entry_type.value)
|
||||
cross_household_recipes = get_repositories(self.session, group_id=self.group_id, household_id=None).recipes
|
||||
cross_household_recipes = get_repositories(
|
||||
self.session, group_id=self.group_id, household_id=None
|
||||
).recipes.by_user(self.user.id)
|
||||
|
||||
qf_string = " AND ".join([f"({rule.query_filter_string})" for rule in rules if rule.query_filter_string])
|
||||
recipes_data = cross_household_recipes.page_all(
|
||||
|
||||
@@ -46,6 +46,7 @@ class RecipeToolController(BaseUserController):
|
||||
|
||||
@router.put("/{item_id}", response_model=RecipeTool)
|
||||
def update_one(self, item_id: UUID4, data: RecipeToolCreate):
|
||||
data = mapper.cast(data, RecipeToolSave, group_id=self.group_id)
|
||||
return self.mixins.update_one(data, item_id)
|
||||
|
||||
@router.delete("/{item_id}", response_model=RecipeTool)
|
||||
|
||||
@@ -24,6 +24,7 @@ from mealie.core.dependencies import (
|
||||
get_temporary_zip_path,
|
||||
)
|
||||
from mealie.pkgs import cache
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes._base import controller
|
||||
from mealie.routes._base.routers import MealieCrudRoute, UserAPIRouter
|
||||
from mealie.schema.cookbook.cookbook import ReadCookBook
|
||||
@@ -252,8 +253,9 @@ class RecipeController(BaseRecipeController):
|
||||
if cookbook_data is None:
|
||||
raise HTTPException(status_code=404, detail="cookbook not found")
|
||||
|
||||
# We use "group_recipes" here so we can return all recipes regardless of household. The query filter can include
|
||||
# a household_id to filter by household. We use the "by_user" so we can sort favorites correctly.
|
||||
# We use "group_recipes" here so we can return all recipes regardless of household. The query filter can
|
||||
# include a household_id to filter by household.
|
||||
# We use "by_user" so we can sort favorites and other user-specific data correctly.
|
||||
pagination_response = self.group_recipes.by_user(self.user.id).page_all(
|
||||
pagination=q,
|
||||
cookbook=cookbook_data,
|
||||
@@ -288,7 +290,11 @@ class RecipeController(BaseRecipeController):
|
||||
foods: list[UUID4] | None = Query(None),
|
||||
tools: list[UUID4] | None = Query(None),
|
||||
) -> RecipeSuggestionResponse:
|
||||
recipes = self.group_recipes.find_suggested_recipes(q, foods, tools)
|
||||
group_recipes_by_user = get_repositories(
|
||||
self.session, group_id=self.group_id, household_id=None
|
||||
).recipes.by_user(self.user.id)
|
||||
|
||||
recipes = group_recipes_by_user.find_suggested_recipes(q, foods, tools)
|
||||
response = RecipeSuggestionResponse(items=recipes)
|
||||
json_compatible_response = orjson.dumps(response.model_dump(by_alias=True))
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ class IngredientFoodsController(BaseUserController):
|
||||
|
||||
@router.put("/{item_id}", response_model=IngredientFood)
|
||||
def update_one(self, item_id: UUID4, data: CreateIngredientFood):
|
||||
data = mapper.cast(data, SaveIngredientFood, group_id=self.group_id)
|
||||
return self.mixins.update_one(data, item_id)
|
||||
|
||||
@router.delete("/{item_id}", response_model=IngredientFood)
|
||||
|
||||
Reference in New Issue
Block a user