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:
Hayden
2021-09-01 21:39:40 -08:00
committed by GitHub
parent 9b1bf56a5d
commit 990244e37e
37 changed files with 749 additions and 196 deletions

View File

@@ -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)

View 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

View File

@@ -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()

View File

@@ -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),

View 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

View File

@@ -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)