Feature/image minify (#256)

* fix settings

* app info cleanup

* bottom-bar experiment

* remove dup key

* type hints

* add dependency

* updated image with query parameters

* read image options

* add image minification

* add image minification step

* alt image routes

* add image minification

* set mobile bar to top

Co-authored-by: hay-kot <hay-kot@pm.me>
This commit is contained in:
Hayden
2021-04-02 21:54:46 -08:00
committed by GitHub
parent bc595d5cfa
commit 95213fa41b
31 changed files with 487 additions and 172 deletions

View File

@@ -1,3 +1,5 @@
from enum import Enum
from fastapi import APIRouter, Depends, File, Form, HTTPException
from fastapi.responses import FileResponse
from mealie.db.database import db
@@ -5,7 +7,7 @@ from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.schema.recipe import Recipe, RecipeURLIn
from mealie.schema.snackbar import SnackResponse
from mealie.services.image_services import read_image, write_image
from mealie.services.image.image import IMG_OPTIONS, delete_image, read_image, write_image
from mealie.services.scraper.scraper import create_from_url
from sqlalchemy.orm.session import Session
@@ -72,20 +74,35 @@ def delete_recipe(
try:
db.recipes.delete(session, recipe_slug)
delete_image(recipe_slug)
except:
raise HTTPException(status_code=404, detail=SnackResponse.error("Unable to Delete Recipe"))
return SnackResponse.error(f"Recipe {recipe_slug} Deleted")
class ImageType(str, Enum):
original = "original"
small = "small"
tiny = "tiny"
@router.get("/{recipe_slug}/image")
async def get_recipe_img(recipe_slug: str):
async def get_recipe_img(recipe_slug: str, image_type: ImageType = ImageType.original):
""" Takes in a recipe slug, returns the static image """
recipe_image = read_image(recipe_slug)
if image_type == ImageType.original:
which_image = IMG_OPTIONS.ORIGINAL_IMAGE
elif image_type == ImageType.small:
which_image = IMG_OPTIONS.MINIFIED_IMAGE
elif image_type == ImageType.tiny:
which_image = IMG_OPTIONS.TINY_IMAGE
recipe_image = read_image(recipe_slug, image_type=which_image)
print(recipe_image)
if recipe_image:
return FileResponse(recipe_image)
else:
return
raise HTTPException(404, "file not found")
@router.put("/{recipe_slug}/image")