Consolidate frontend types (#1245)

This commit is contained in:
Philipp Fischbeck
2022-05-21 21:22:02 +02:00
committed by GitHub
parent 6a88a59981
commit 479900e912
74 changed files with 261 additions and 582 deletions

View File

@@ -1,25 +1,12 @@
from fastapi import APIRouter
from mealie.routes._base import BaseAdminController, controller
from mealie.schema._mealie import MealieModel
from mealie.schema.admin.email import EmailReady, EmailSuccess, EmailTest
from mealie.services.email import EmailService
router = APIRouter(prefix="/email")
class EmailReady(MealieModel):
ready: bool
class EmailSuccess(MealieModel):
success: bool
error: str = None
class EmailTest(MealieModel):
email: str
@controller(router)
class AdminEmailController(BaseAdminController):
@router.get("", response_model=EmailReady)

View File

@@ -9,7 +9,7 @@ from mealie.routes._base import BaseUserController, controller
from mealie.routes._base.mixins import HttpRepo
from mealie.schema import mapper
from mealie.schema.meal_plan import CreatePlanEntry, ReadPlanEntry, SavePlanEntry, UpdatePlanEntry
from mealie.schema.meal_plan.new_meal import CreatRandomEntry
from mealie.schema.meal_plan.new_meal import CreateRandomEntry
from mealie.schema.meal_plan.plan_rules import PlanRulesDay
from mealie.schema.recipe.recipe import Recipe
from mealie.schema.response.responses import ErrorResponse
@@ -42,7 +42,7 @@ class GroupMealplanController(BaseUserController):
return self.repo.get_today(group_id=self.group_id)
@router.post("/random", response_model=ReadPlanEntry)
def create_random_meal(self, data: CreatRandomEntry):
def create_random_meal(self, data: CreateRandomEntry):
"""
create_random_meal is a route that provides the randomized funcitonality for mealplaners.
It operates by following the rules setout in the Groups mealplan settings. If not settings

View File

@@ -7,13 +7,7 @@ from mealie.core.dependencies.dependencies import temporary_zip_path
from mealie.core.security import create_file_token
from mealie.routes._base import BaseUserController, controller
from mealie.schema.group.group_exports import GroupDataExport
from mealie.schema.recipe.recipe_bulk_actions import (
AssignCategories,
AssignTags,
BulkActionsResponse,
DeleteRecipes,
ExportRecipes,
)
from mealie.schema.recipe.recipe_bulk_actions import AssignCategories, AssignTags, DeleteRecipes, ExportRecipes
from mealie.schema.response.responses import SuccessResponse
from mealie.services.recipe.recipe_bulk_service import RecipeBulkActionsService
@@ -26,15 +20,16 @@ class RecipeBulkActionsController(BaseUserController):
def service(self) -> RecipeBulkActionsService:
return RecipeBulkActionsService(self.repos, self.user, self.group)
@router.post("/tag", response_model=BulkActionsResponse)
# TODO Should these actions return some success response?
@router.post("/tag")
def bulk_tag_recipes(self, tag_data: AssignTags):
self.service.assign_tags(tag_data.recipes, tag_data.tags)
@router.post("/categorize", response_model=BulkActionsResponse)
@router.post("/categorize")
def bulk_categorize_recipes(self, assign_cats: AssignCategories):
self.service.assign_categories(assign_cats.recipes, assign_cats.categories)
@router.post("/delete", response_model=BulkActionsResponse)
@router.post("/delete")
def bulk_delete_recipes(self, delete_recipes: DeleteRecipes):
self.service.delete_recipes(delete_recipes.recipes)

View File

@@ -27,6 +27,7 @@ from mealie.schema.recipe import Recipe, RecipeImageTypes, ScrapeRecipe
from mealie.schema.recipe.recipe import CreateRecipe, CreateRecipeByUrlBulk, RecipeSummary
from mealie.schema.recipe.recipe_asset import RecipeAsset
from mealie.schema.recipe.recipe_scraper import ScrapeRecipeTest
from mealie.schema.recipe.request_helpers import RecipeZipTokenResponse, UpdateImageResponse
from mealie.schema.response.responses import ErrorResponse
from mealie.schema.server.tasks import ServerTaskNames
from mealie.services import urls
@@ -59,10 +60,6 @@ class RecipeGetAll(GetAll):
load_food: bool = False
class UpdateImageResponse(BaseModel):
image: str
class FormatResponse(BaseModel):
jjson: list[str] = Field(..., alias="json")
zip: list[str]
@@ -81,10 +78,10 @@ class RecipeExportController(BaseRecipeController):
def get_recipe_formats_and_templates(self):
return TemplateService().templates
@router_exports.post("/{slug}/exports")
@router_exports.post("/{slug}/exports", response_model=RecipeZipTokenResponse)
def get_recipe_zip_token(self, slug: str):
"""Generates a recipe zip token to be used to download a recipe as a zip file"""
return {"token": create_recipe_slug_token(slug)}
return RecipeZipTokenResponse(token=create_recipe_slug_token(slug))
@router_exports.get("/{slug}/exports", response_class=FileResponse)
def get_recipe_as_format(self, slug: str, template_name: str, temp_dir=Depends(temporary_dir)):

View File

@@ -5,17 +5,17 @@ from fastapi import HTTPException, status
from mealie.core.security import create_access_token
from mealie.routes._base import BaseUserController, controller
from mealie.routes._base.routers import UserAPIRouter
from mealie.schema.user import CreateToken, LoingLiveTokenIn, LongLiveTokenInDB
from mealie.schema.user import CreateToken, DeleteTokenResponse, LongLiveTokenIn, LongLiveTokenInDB, LongLiveTokenOut
router = UserAPIRouter(prefix="/users", tags=["Users: Tokens"])
@controller(router)
class UserApiTokensController(BaseUserController):
@router.post("/api-tokens", status_code=status.HTTP_201_CREATED)
@router.post("/api-tokens", status_code=status.HTTP_201_CREATED, response_model=LongLiveTokenOut)
def create_api_token(
self,
token_name: LoingLiveTokenIn,
token_name: LongLiveTokenIn,
):
"""Create api_token in the Database"""
@@ -33,9 +33,9 @@ class UserApiTokensController(BaseUserController):
new_token_in_db = self.repos.api_tokens.create(token_model)
if new_token_in_db:
return {"token": token}
return LongLiveTokenOut(token=token)
@router.delete("/api-tokens/{token_id}")
@router.delete("/api-tokens/{token_id}", response_model=DeleteTokenResponse)
def delete_api_token(self, token_id: int):
"""Delete api_token from the Database"""
token: LongLiveTokenInDB = self.repos.api_tokens.get(token_id)
@@ -45,6 +45,6 @@ class UserApiTokensController(BaseUserController):
if token.user.email == self.user.email:
deleted_token = self.repos.api_tokens.delete(token_id)
return {"token_delete": deleted_token.name}
return DeleteTokenResponse(token_delete=deleted_token.name)
else:
raise HTTPException(status.HTTP_403_FORBIDDEN)