Feature/user seedable foods (#1176)

* remove odd ingredients

* UI Elements for food

* update translated percentage

* spek -> speck

* generate types

* seeder api endpoints + tests

* implement foods seeder UI

* localize some food strings
This commit is contained in:
Hayden
2022-05-01 12:45:50 -08:00
committed by GitHub
parent 67178f9b74
commit d6e2b4ab85
60 changed files with 478 additions and 172 deletions

View File

@@ -11,6 +11,7 @@ from . import (
controller_mealplan_config,
controller_mealplan_rules,
controller_migrations,
controller_seeder,
controller_shopping_lists,
controller_webhooks,
)
@@ -30,3 +31,4 @@ router.include_router(controller_shopping_lists.router)
router.include_router(controller_shopping_lists.item_router)
router.include_router(controller_labels.router)
router.include_router(controller_group_notifications.router)
router.include_router(controller_seeder.router)

View File

@@ -0,0 +1,38 @@
from functools import cached_property
from fastapi import APIRouter, HTTPException
from mealie.routes._base.base_controllers import BaseUserController
from mealie.routes._base.controller import controller
from mealie.schema.group.group_seeder import SeederConfig
from mealie.schema.response.responses import ErrorResponse, SuccessResponse
from mealie.services.seeder.seeder_service import SeederService
router = APIRouter(prefix="/groups/seeders", tags=["Groups: Seeders"])
@controller(router)
class DataSeederController(BaseUserController):
@cached_property
def service(self) -> SeederService:
return SeederService(self.repos, self.user, self.group)
def _wrap(self, func):
try:
func()
except Exception as e:
raise HTTPException(status_code=500, detail=ErrorResponse.respond("Seeding Failed")) from e
return SuccessResponse.respond("Seeding Successful")
@router.post("/foods", response_model=SuccessResponse)
def seed_foods(self, data: SeederConfig) -> dict:
return self._wrap(lambda: self.service.seed_foods(data.locale))
@router.post("/labels", response_model=SuccessResponse)
def seed_labels(self, data: SeederConfig) -> dict:
return self._wrap(lambda: self.service.seed_labels(data.locale))
@router.post("/units", response_model=SuccessResponse)
def seed_units(self, data: SeederConfig) -> dict:
return self._wrap(lambda: self.service.seed_units(data.locale))