mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-29 13:27:09 -05:00
Refactor/group page (#666)
* refactor(backend): ♻️ Refactor base class to be abstract and create a router factory method * feat(frontend): ✨ add group edit * refactor(backend): ✨ add group edit support Co-authored-by: hay-kot <hay-kot@pm.me>
This commit is contained in:
@@ -1,9 +1,18 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from . import cookbooks, crud
|
||||
from mealie.services.base_http_service import RouterFactory
|
||||
from mealie.services.cookbook.cookbook_service import CookbookService
|
||||
from mealie.services.group.webhook_service import WebhookService
|
||||
|
||||
from . import categories, crud, self_service
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
router.include_router(cookbooks.user_router)
|
||||
webhook_router = RouterFactory(service=WebhookService, prefix="/groups/webhooks", tags=["Groups: Webhooks"])
|
||||
cookbook_router = RouterFactory(service=CookbookService, prefix="/groups/cookbooks", tags=["Groups: Cookbooks"])
|
||||
router.include_router(self_service.user_router)
|
||||
router.include_router(cookbook_router)
|
||||
router.include_router(categories.user_router)
|
||||
router.include_router(webhook_router)
|
||||
router.include_router(crud.user_router)
|
||||
router.include_router(crud.admin_router)
|
||||
|
||||
22
mealie/routes/groups/categories.py
Normal file
22
mealie/routes/groups/categories.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from fastapi import Depends
|
||||
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.recipe.recipe_category import CategoryBase
|
||||
from mealie.services.group.group_service import GroupSelfService
|
||||
|
||||
user_router = UserAPIRouter(prefix="/groups/categories", tags=["Groups: Mealplan Categories"])
|
||||
|
||||
|
||||
@user_router.get("", response_model=list[CategoryBase])
|
||||
def get_mealplan_categories(group_service: GroupSelfService = Depends(GroupSelfService.read_existing)):
|
||||
return group_service.item.categories
|
||||
|
||||
|
||||
@user_router.put("", response_model=list[CategoryBase])
|
||||
def update_mealplan_categories(
|
||||
new_categories: list[CategoryBase], group_service: GroupSelfService = Depends(GroupSelfService.write_existing)
|
||||
):
|
||||
|
||||
items = group_service.update_categories(new_categories)
|
||||
|
||||
return items.categories
|
||||
@@ -1,49 +0,0 @@
|
||||
from fastapi import Depends
|
||||
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.cookbook.cookbook import CreateCookBook, ReadCookBook, RecipeCookBook
|
||||
from mealie.services.cookbook import CookbookService
|
||||
|
||||
user_router = UserAPIRouter(prefix="/groups/cookbooks", tags=["Groups: Cookbooks"])
|
||||
|
||||
|
||||
@user_router.get("", response_model=list[ReadCookBook])
|
||||
def get_all_cookbook(cb_service: CookbookService = Depends(CookbookService.private)):
|
||||
""" Get cookbook from the Database """
|
||||
# Get Item
|
||||
return cb_service.get_all()
|
||||
|
||||
|
||||
@user_router.post("", response_model=ReadCookBook)
|
||||
def create_cookbook(data: CreateCookBook, cb_service: CookbookService = Depends(CookbookService.private)):
|
||||
""" Create cookbook in the Database """
|
||||
# Create Item
|
||||
return cb_service.create_one(data)
|
||||
|
||||
|
||||
@user_router.put("", response_model=list[ReadCookBook])
|
||||
def update_many(data: list[ReadCookBook], cb_service: CookbookService = Depends(CookbookService.private)):
|
||||
""" Create cookbook in the Database """
|
||||
# Create Item
|
||||
return cb_service.update_many(data)
|
||||
|
||||
|
||||
@user_router.get("/{id}", response_model=RecipeCookBook)
|
||||
def get_cookbook(cb_service: CookbookService = Depends(CookbookService.write_existing)):
|
||||
""" Get cookbook from the Database """
|
||||
# Get Item
|
||||
return cb_service.cookbook
|
||||
|
||||
|
||||
@user_router.put("/{id}")
|
||||
def update_cookbook(data: CreateCookBook, cb_service: CookbookService = Depends(CookbookService.write_existing)):
|
||||
""" Update cookbook in the Database """
|
||||
# Update Item
|
||||
return cb_service.update_one(data)
|
||||
|
||||
|
||||
@user_router.delete("/{id}")
|
||||
def delete_cookbook(cd_service: CookbookService = Depends(CookbookService.write_existing)):
|
||||
""" Delete cookbook from the Database """
|
||||
# Delete Item
|
||||
return cd_service.delete_one()
|
||||
@@ -12,17 +12,6 @@ admin_router = AdminAPIRouter(prefix="/groups", tags=["Groups: CRUD"])
|
||||
user_router = UserAPIRouter(prefix="/groups", tags=["Groups: CRUD"])
|
||||
|
||||
|
||||
@user_router.get("/self", response_model=GroupInDB)
|
||||
async def get_current_user_group(
|
||||
current_user: PrivateUser = Depends(get_current_user),
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
""" Returns the Group Data for the Current User """
|
||||
current_user: PrivateUser
|
||||
|
||||
return db.groups.get(session, current_user.group, "name")
|
||||
|
||||
|
||||
@admin_router.get("", response_model=list[GroupInDB])
|
||||
async def get_all_groups(
|
||||
session: Session = Depends(generate_session),
|
||||
|
||||
14
mealie/routes/groups/self_service.py
Normal file
14
mealie/routes/groups/self_service.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from fastapi import Depends
|
||||
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.user.user import GroupInDB
|
||||
from mealie.services.group.group_service import GroupSelfService
|
||||
|
||||
user_router = UserAPIRouter(prefix="/groups/self", tags=["Groups: Self Service"])
|
||||
|
||||
|
||||
@user_router.get("", response_model=GroupInDB)
|
||||
async def get_logged_in_user_group(g_self_service: GroupSelfService = Depends(GroupSelfService.write_existing)):
|
||||
""" Returns the Group Data for the Current User """
|
||||
|
||||
return g_self_service.item
|
||||
@@ -27,7 +27,7 @@ logger = get_logger()
|
||||
@public_router.get("/{slug}", response_model=Recipe)
|
||||
def get_recipe(recipe_service: RecipeService = Depends(RecipeService.read_existing)):
|
||||
""" Takes in a recipe slug, returns all data for a recipe """
|
||||
return recipe_service.recipe
|
||||
return recipe_service.item
|
||||
|
||||
|
||||
@user_router.post("", status_code=201, response_model=str)
|
||||
|
||||
Reference in New Issue
Block a user