feat: Cross-Household Recipes (#4089)

This commit is contained in:
Michael Genson
2024-08-31 21:54:10 -05:00
committed by GitHub
parent 7ef2e91ecf
commit 9acf9ec27c
16 changed files with 545 additions and 92 deletions

View File

@@ -1,8 +1,10 @@
from functools import cached_property
from uuid import UUID
from fastapi import HTTPException, status
from pydantic import UUID4
from mealie.repos.all_repositories import get_repositories
from mealie.routes._base import BaseUserController, controller
from mealie.routes._base.routers import UserAPIRouter
from mealie.routes.users._helpers import assert_user_change_allowed
@@ -14,6 +16,10 @@ router = UserAPIRouter()
@controller(router)
class UserRatingsController(BaseUserController):
@cached_property
def group_recipes(self):
return get_repositories(self.session, group_id=self.group_id, household_id=None).recipes
def get_recipe_or_404(self, slug_or_id: str | UUID):
"""Fetches a recipe by slug or id, or raises a 404 error if not found."""
if isinstance(slug_or_id, str):
@@ -22,11 +28,10 @@ class UserRatingsController(BaseUserController):
except ValueError:
pass
recipes_repo = self.repos.recipes
if isinstance(slug_or_id, UUID):
recipe = recipes_repo.get_one(slug_or_id, key="id")
recipe = self.group_recipes.get_one(slug_or_id, key="id")
else:
recipe = recipes_repo.get_one(slug_or_id, key="slug")
recipe = self.group_recipes.get_one(slug_or_id, key="slug")
if not recipe:
raise HTTPException(