mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-28 13:05:26 -05:00
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:
@@ -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)
|
||||
|
||||
38
mealie/routes/groups/controller_seeder.py
Normal file
38
mealie/routes/groups/controller_seeder.py
Normal 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))
|
||||
Reference in New Issue
Block a user