Revert "v0.2.1 (#157)" (#158)

This reverts commit a899f46464.
This commit is contained in:
Hayden
2021-02-10 19:39:46 -09:00
committed by GitHub
parent a899f46464
commit 8221c36a89
82 changed files with 895 additions and 937 deletions

View File

@@ -32,10 +32,10 @@ def available_imports():
@router.post("/export/database", status_code=201)
def export_database(data: BackupJob, session: Session = Depends(generate_session)):
def export_database(data: BackupJob, db: Session = Depends(generate_session)):
"""Generates a backup of the recipe database in json format."""
export_path = backup_all(
session=session,
session=db,
tag=data.tag,
templates=data.templates,
export_recipes=data.options.recipes,
@@ -66,7 +66,7 @@ def upload_backup_zipfile(archive: UploadFile = File(...)):
@router.get("/{file_name}/download")
async def upload_nextcloud_zipfile(file_name: str):
def upload_nextcloud_zipfile(file_name: str):
""" Upload a .zip File to later be imported into Mealie """
file = BACKUP_DIR.joinpath(file_name)
@@ -80,12 +80,12 @@ async def upload_nextcloud_zipfile(file_name: str):
@router.post("/{file_name}/import", status_code=200)
def import_database(
file_name: str, import_data: ImportJob, session: Session = Depends(generate_session)
file_name: str, import_data: ImportJob, db: Session = Depends(generate_session)
):
""" Import a database backup file generated from Mealie. """
import_db = ImportDatabase(
session=session,
session=db,
zip_archive=import_data.name,
import_recipes=import_data.recipes,
force_import=import_data.force,
@@ -110,4 +110,4 @@ def delete_backup(file_name: str):
detail=SnackResponse.error("Unable to Delete Backup. See Log File"),
)
return SnackResponse.error(f"{file_name} Deleted")
return SnackResponse.success(f"{file_name} Deleted")

View File

@@ -27,7 +27,18 @@ async def get_log(num: int):
""" Doc Str """
with open(LOGGER_FILE, "rb") as f:
log_text = tail(f, num)
HTML_RESPONSE = log_text
HTML_RESPONSE = f"""
<html>
<head>
<title>Mealie Log</title>
</head>
<body style="white-space: pre-line">
<p>
{log_text}
</p>
</body>
</html>
"""
return HTML_RESPONSE

View File

@@ -10,53 +10,66 @@ router = APIRouter(prefix="/api/meal-plans", tags=["Meal Plan"])
@router.get("/all", response_model=List[MealPlan])
def get_all_meals(session: Session = Depends(generate_session)):
def get_all_meals(db: Session = Depends(generate_session)):
""" Returns a list of all available Meal Plan """
return MealPlan.get_all(session)
return MealPlan.get_all(db)
@router.post("/create")
def set_meal_plan(data: MealPlan, session: Session = Depends(generate_session)):
def set_meal_plan(data: MealPlan, db: Session = Depends(generate_session)):
""" Creates a meal plan database entry """
data.process_meals(session)
data.save_to_db(session)
data.process_meals(db)
data.save_to_db(db)
# raise HTTPException(
# status_code=404,
# detail=SnackResponse.error("Unable to Create Mealplan See Log"),
# )
return SnackResponse.success("Mealplan Created")
@router.get("/this-week", response_model=MealPlan)
def get_this_week(session: Session = Depends(generate_session)):
def get_this_week(db: Session = Depends(generate_session)):
""" Returns the meal plan data for this week """
return MealPlan.this_week(session)
return MealPlan.this_week(db)
@router.put("/{plan_id}")
def update_meal_plan(
plan_id: str, meal_plan: MealPlan, session: Session = Depends(generate_session)
plan_id: str, meal_plan: MealPlan, db: Session = Depends(generate_session)
):
""" Updates a meal plan based off ID """
meal_plan.process_meals(session)
meal_plan.update(session, plan_id)
meal_plan.process_meals(db)
meal_plan.update(db, plan_id)
# try:
# meal_plan.process_meals()
# meal_plan.update(plan_id)
# except:
# raise HTTPException(
# status_code=404,
# detail=SnackResponse.error("Unable to Update Mealplan"),
# )
return SnackResponse.info("Mealplan Updated")
return SnackResponse.success("Mealplan Updated")
@router.delete("/{plan_id}")
def delete_meal_plan(plan_id, session: Session = Depends(generate_session)):
def delete_meal_plan(plan_id, db: Session = Depends(generate_session)):
""" Removes a meal plan from the database """
MealPlan.delete(session, plan_id)
MealPlan.delete(db, plan_id)
return SnackResponse.error("Mealplan Deleted")
return SnackResponse.success("Mealplan Deleted")
@router.get("/today", tags=["Meal Plan"])
def get_today(session: Session = Depends(generate_session)):
def get_today(db: Session = Depends(generate_session)):
"""
Returns the recipe slug for the meal scheduled for today.
If no meal is scheduled nothing is returned
"""
return MealPlan.today(session)
return MealPlan.today(db)

View File

@@ -37,14 +37,14 @@ def get_avaiable_nextcloud_imports():
@router.post("/{type}/{file_name}/import")
def import_nextcloud_directory(
type: str, file_name: str, session: Session = Depends(generate_session)
type: str, file_name: str, db: Session = Depends(generate_session)
):
""" Imports all the recipes in a given directory """
file_path = MIGRATION_DIR.joinpath(type, file_name)
if type == "nextcloud":
return nextcloud_migrate(session, file_path)
return nextcloud_migrate(db, file_path)
elif type == "chowdown":
return chowdow_migrate(session, file_path)
return chowdow_migrate(db, file_path)
else:
return SnackResponse.error("Incorrect Migration Type Selected")
@@ -62,7 +62,7 @@ def delete_migration_data(type: str, file_name: str):
else:
SnackResponse.error("File/Folder not found.")
return SnackResponse.error(f"Migration Data Remove: {remove_path.absolute()}")
return SnackResponse.info(f"Migration Data Remove: {remove_path.absolute()}")
@router.post("/{type}/upload")

View File

@@ -4,8 +4,6 @@ from fastapi import APIRouter, Depends
from models.category_models import RecipeCategoryResponse
from sqlalchemy.orm.session import Session
from utils.snackbar import SnackResponse
router = APIRouter(
prefix="/api/categories",
tags=["Recipe Categories"],
@@ -35,5 +33,3 @@ async def delete_recipe_category(
from any recipes that contain it """
db.categories.delete(session, category)
return SnackResponse(f"Category Deleted: {category}")

View File

@@ -62,11 +62,11 @@ def delete_recipe(recipe_slug: str, db: Session = Depends(generate_session)):
status_code=404, detail=SnackResponse.error("Unable to Delete Recipe")
)
return SnackResponse.error(f"Recipe {recipe_slug} Deleted")
return SnackResponse.success("Recipe Deleted")
@router.get("/{recipe_slug}/image")
async def get_recipe_img(recipe_slug: str):
def get_recipe_img(recipe_slug: str):
""" Takes in a recipe slug, returns the static image """
recipe_image = read_image(recipe_slug)
@@ -75,13 +75,10 @@ async def get_recipe_img(recipe_slug: str):
@router.put("/{recipe_slug}/image")
def update_recipe_image(
recipe_slug: str,
image: bytes = File(...),
extension: str = Form(...),
session: Session = Depends(generate_session),
recipe_slug: str, image: bytes = File(...), extension: str = Form(...)
):
""" Removes an existing image and replaces it with the incoming file. """
response = write_image(recipe_slug, image, extension)
Recipe.update_image(session, recipe_slug, extension)
Recipe.update_image(recipe_slug, extension)
return response

View File

@@ -3,8 +3,6 @@ from db.db_setup import generate_session
from fastapi import APIRouter, Depends
from sqlalchemy.orm.session import Session
from utils.snackbar import SnackResponse
router = APIRouter(tags=["Recipes"])
router = APIRouter(
@@ -32,5 +30,3 @@ async def delete_recipe_tag(tag: str, session: Session = Depends(generate_sessio
from any recipes that contain it"""
db.tags.delete(session, tag)
return SnackResponse.error(f"Tag Deleted: {tag}")

View File

@@ -1,8 +1,6 @@
from db.database import db
from db.db_setup import generate_session
from fastapi import APIRouter, Depends
from models.settings_models import SiteSettings
from services.settings_services import default_settings_init
from services.settings_services import SiteSettings
from sqlalchemy.orm.session import Session
from utils.post_webhooks import post_webhooks
from utils.snackbar import SnackResponse
@@ -11,24 +9,10 @@ router = APIRouter(prefix="/api/site-settings", tags=["Settings"])
@router.get("")
def get_main_settings(session: Session = Depends(generate_session)):
def get_main_settings(db: Session = Depends(generate_session)):
""" Returns basic site settings """
try:
data = db.settings.get(session, "main")
except:
default_settings_init(session)
data = db.settings.get(session, "main")
return data
@router.put("")
def update_settings(data: SiteSettings, session: Session = Depends(generate_session)):
""" Returns Site Settings """
db.settings.update(session, "main", data.dict())
return SnackResponse.success("Settings Updated")
return SiteSettings.get_site_settings(db)
@router.post("/webhooks/test")
@@ -36,3 +20,20 @@ def test_webhooks():
""" Run the function to test your webhooks """
return post_webhooks()
@router.put("")
def update_settings(data: SiteSettings, db: Session = Depends(generate_session)):
""" Returns Site Settings """
data.update(db)
# try:
# data.update()
# except:
# raise HTTPException(
# status_code=400, detail=SnackResponse.error("Unable to Save Settings")
# )
return SnackResponse.success("Settings Updated")

View File

@@ -15,10 +15,10 @@ def facivon():
@router.get("/")
async def root():
def root():
return FileResponse(BASE_HTML)
@router.get("/{full_path:path}")
async def root_plus(full_path):
def root_plus(full_path):
return FileResponse(BASE_HTML)

View File

@@ -1,47 +1,64 @@
from db.db_setup import generate_session
from fastapi import APIRouter, Depends
from models.theme_models import SiteTheme
from services.settings_services import SiteTheme
from sqlalchemy.orm.session import Session
from utils.snackbar import SnackResponse
from db.database import db
router = APIRouter(prefix="/api", tags=["Themes"])
@router.get("/themes")
def get_all_themes(session: Session = Depends(generate_session)):
def get_all_themes(db: Session = Depends(generate_session)):
""" Returns all site themes """
return db.themes.get_all(session)
return SiteTheme.get_all(db)
@router.post("/themes/create")
def create_theme(data: SiteTheme, session: Session = Depends(generate_session)):
def create_theme(data: SiteTheme, db: Session = Depends(generate_session)):
""" Creates a site color theme database entry """
db.themes.create(session, data.dict())
data.save_to_db(db)
# try:
# data.save_to_db()
# except:
# raise HTTPException(
# status_code=400, detail=SnackResponse.error("Unable to Save Theme")
# )
return SnackResponse.success("Theme Saved")
@router.get("/themes/{theme_name}")
def get_single_theme(theme_name: str, session: Session = Depends(generate_session)):
def get_single_theme(theme_name: str, db: Session = Depends(generate_session)):
""" Returns a named theme """
return db.themes.get(session, theme_name)
return SiteTheme.get_by_name(db, theme_name)
@router.put("/themes/{theme_name}")
def update_theme(
theme_name: str, data: SiteTheme, session: Session = Depends(generate_session)
theme_name: str, data: SiteTheme, db: Session = Depends(generate_session)
):
""" Update a theme database entry """
db.themes.update(session, theme_name, data.dict())
data.update_document(db)
return SnackResponse.info(f"Theme Updated: {theme_name}")
# try:
# except:
# raise HTTPException(
# status_code=400, detail=SnackResponse.error("Unable to Update Theme")
# )
return SnackResponse.success("Theme Updated")
@router.delete("/themes/{theme_name}")
def delete_theme(theme_name: str, session: Session = Depends(generate_session)):
def delete_theme(theme_name: str, db: Session = Depends(generate_session)):
""" Deletes theme from the database """
db.themes.delete(session, theme_name)
SiteTheme.delete_theme(db, theme_name)
# try:
# SiteTheme.delete_theme(theme_name)
# except:
# raise HTTPException(
# status_code=400, detail=SnackResponse.error("Unable to Delete Theme")
# )
return SnackResponse.error(f"Theme Deleted: {theme_name}")
return SnackResponse.success("Theme Deleted")

View File

@@ -0,0 +1,33 @@
from fastapi import APIRouter, Depends
from fastapi.security import OAuth2PasswordRequestForm
# from fastapi_login import LoginManager
# from fastapi_login.exceptions import InvalidCredentialsException
router = APIRouter()
# SECRET = "876cfb59db03d9c17cefec967b00255d3f7d93a823e5dc2a"
# manager = LoginManager(SECRET, tokenUrl="/api/auth/token")
# fake_db = {"johndoe@e.mail": {"password": "hunter2"}}
# @manager.user_loader
# def load_user(email: str): # could also be an asynchronous function
# user = fake_db.get(email)
# return user
# @router.post("/api/auth/token", tags=["User Gen"])
# def login(data: OAuth2PasswordRequestForm = Depends()):
# email = data.username
# password = data.password
# user = load_user(email) # we are using the same function to retrieve the user
# if not user:
# raise InvalidCredentialsException # you can also use your own HTTPException
# elif password != user["password"]:
# raise InvalidCredentialsException
# access_token = manager.create_access_token(data=dict(sub=email))
# return {"access_token": access_token, "token_type": "bearer"}