From 710e54f4cc906631bce737b7f0b365e659aabd82 Mon Sep 17 00:00:00 2001 From: Hayden Date: Sat, 16 Jan 2021 09:07:06 -0900 Subject: [PATCH] rename settings.py to app_config.py --- .gitignore | 1 + mealie/app.py | 39 ++++++++++++++++-------- mealie/{settings.py => app_config.py} | 2 +- mealie/data/db/mealie.sqlite | Bin 225280 -> 225280 bytes mealie/db/db_base.py | 2 +- mealie/db/db_mealplan.py | 2 +- mealie/db/db_recipes.py | 2 +- mealie/db/db_settings.py | 2 +- mealie/db/db_setup.py | 2 +- mealie/db/db_themes.py | 2 +- mealie/db/mongo/mongo_setup.py | 2 +- mealie/models/backup_models.py | 36 ++++++++++++++++++++-- mealie/services/backups/exports.py | 2 +- mealie/services/backups/imports.py | 3 +- mealie/services/migrations/chowdown.py | 2 +- mealie/services/migrations/nextcloud.py | 2 +- mealie/utils/api_docs.py | 7 +++-- mealie/utils/startup.py | 2 +- 18 files changed, 79 insertions(+), 31 deletions(-) rename mealie/{settings.py => app_config.py} (97%) diff --git a/.gitignore b/.gitignore index 99fe9b65c..6aaeb2234 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ __pycache__/ docs/site/ mealie/temp/* mealie/temp/api.html +.temp/ mealie/data/backups/* diff --git a/mealie/app.py b/mealie/app.py index 739b313be..365079ed6 100644 --- a/mealie/app.py +++ b/mealie/app.py @@ -3,9 +3,16 @@ from fastapi import FastAPI from fastapi.staticfiles import StaticFiles import utils.startup as startup -from routes import (backup_routes, meal_routes, migration_routes, - recipe_routes, setting_routes, static_routes, user_routes) -from settings import PORT, PRODUCTION, WEB_PATH, docs_url, redoc_url +from app_config import PORT, PRODUCTION, WEB_PATH, docs_url, redoc_url +from routes import ( + backup_routes, + meal_routes, + migration_routes, + recipe_routes, + setting_routes, + static_routes, + user_routes, +) from utils.api_docs import generate_api_docs from utils.logger import logger @@ -19,17 +26,25 @@ app = FastAPI( redoc_url=redoc_url, ) -# Mount Vue Frontend only in production -if PRODUCTION: + +def mount_static_files(): app.mount("/static", StaticFiles(directory=WEB_PATH, html=True)) -# API Routes -app.include_router(recipe_routes.router) -app.include_router(meal_routes.router) -app.include_router(setting_routes.router) -app.include_router(backup_routes.router) -app.include_router(user_routes.router) -app.include_router(migration_routes.router) + +def api_routers(): + # First + app.include_router(recipe_routes.router) + app.include_router(meal_routes.router) + app.include_router(setting_routes.router) + app.include_router(backup_routes.router) + app.include_router(user_routes.router) + app.include_router(migration_routes.router) + + +if PRODUCTION: + mount_static_files() + +api_routers() # API 404 Catch all CALL AFTER ROUTERS @app.get("/api/{full_path:path}", status_code=404, include_in_schema=False) diff --git a/mealie/settings.py b/mealie/app_config.py similarity index 97% rename from mealie/settings.py rename to mealie/app_config.py index b25141e12..84fbcf02c 100644 --- a/mealie/settings.py +++ b/mealie/app_config.py @@ -20,7 +20,7 @@ DEBUG_DIR = DATA_DIR.joinpath("debug") MIGRATION_DIR = DATA_DIR.joinpath("migration") TEMPLATE_DIR = DATA_DIR.joinpath("templates") TINYDB_DIR = DATA_DIR.joinpath("db") -TEMP_DIR = DATA_DIR.joinpath("temp") +TEMP_DIR = DATA_DIR.joinpath(".temp") REQUIRED_DIRS = [ DATA_DIR, diff --git a/mealie/data/db/mealie.sqlite b/mealie/data/db/mealie.sqlite index fba967d4866533629d917d3a4c5f469efec55f3e..5a18fd1fa2ae0d5d63cf8b3dd468df863d3a0fac 100644 GIT binary patch delta 772 zcmYjOOK1~O6n&peK9iZb5o5rnl8JN-N=urlALt?kv{Kqd8``ZUlXjARlaQI9;G$hA zE{e8M23)CND+t;cWTXgos~{F}Q7y$F*a{*RLcx{wr55XZaN(YN&b{YyXKLb1O}rJv z@ww*nI9^G8>zP{$REK&OTHFM-5bVHK^^k8J6oHWNpl+D*;HW;OdoT%(=ozgvY4Qjm z0-FdnVTVya0Z25A52&QNb2HFSYw*6z*9I9QB35tw=pjHI2!g7d)+WYsS&5Xt{EX0# z5HAbcQTi2ns`2dw04mZDP8W4;BBL25sn&OQL->SU58*Q4OV;%$?!t=wHj1M@-`URg zc5%;53BgM!u~}mf=psA{2mihUSJt~e9J5~b;clM78iG2rzs3Y_pj%+Zj(KFWv22Ix zB@Pta&r~lyNMemqB3ec86w*>%nvfLnxp3e8+WE-wm@ea4TTbCSBFQbTtl{@G(g@kpGnU+Hl(JgU@8*yP zPX0sFCDYW4;Np-QLh5PeA;-R9CqLtAYSGb8e2b1mBcw=;p5x{%SAyo*{hB#@zKa%l o>PELMS3jM#yGQ92VhaQGm%vkg1xXv;R(^$1pYis}I8AVW0G&L+(XHAo86Q}Tpz;)bFGbCgwOtHY-#HV_2*1t@fm7Q4-Ds&kr zdXQ3!dCiBih<;>=DE^A+ zh^kD>AeQLUhx&EXs!4C}?Ug|V+b)A?giFqC6Sri+af;1DZGwR zr*at>ZgBR$V5`gUDA&9)IrD)5Nn@ zq4-N&6B)OrinQE5<)qf2qQq{L_#KbAwUI%i=Za$L!`2b|q_eOFfib%wo2!$wkg6$` zIkJB}#fX=Sqf74c%l@Ei{owUDW5eBXokVOc>=3EP?qt>2F_& z*X0n;o~NzgbAEN+lKZ2(!|ic7yyB*d8mV4~U4yug>T#+JI47iHj$yzpZ%XHP^_ZsS TsBx&v0lOceqXJvHO2g7$3=!hm diff --git a/mealie/db/db_base.py b/mealie/db/db_base.py index 462ac3ca3..e8a9a7281 100644 --- a/mealie/db/db_base.py +++ b/mealie/db/db_base.py @@ -2,7 +2,7 @@ import json from typing import Union import mongoengine -from settings import USE_MONGO, USE_SQL +from app_config import USE_MONGO, USE_SQL from sqlalchemy.orm.session import Session from db.sql.db_session import create_session diff --git a/mealie/db/db_mealplan.py b/mealie/db/db_mealplan.py index 00ed5e3cf..96907390f 100644 --- a/mealie/db/db_mealplan.py +++ b/mealie/db/db_mealplan.py @@ -1,6 +1,6 @@ from typing import List -from settings import USE_MONGO, USE_SQL +from app_config import USE_MONGO, USE_SQL from db.db_base import BaseDocument from db.db_setup import USE_MONGO, USE_SQL diff --git a/mealie/db/db_recipes.py b/mealie/db/db_recipes.py index 271b8893a..945ee079d 100644 --- a/mealie/db/db_recipes.py +++ b/mealie/db/db_recipes.py @@ -1,4 +1,4 @@ -from settings import USE_MONGO, USE_SQL +from app_config import USE_MONGO, USE_SQL from db.db_base import BaseDocument from db.mongo.recipe_models import RecipeDocument diff --git a/mealie/db/db_settings.py b/mealie/db/db_settings.py index 997ec595f..2f3089500 100644 --- a/mealie/db/db_settings.py +++ b/mealie/db/db_settings.py @@ -1,4 +1,4 @@ -from settings import USE_MONGO, USE_SQL +from app_config import USE_MONGO, USE_SQL from db.db_base import BaseDocument from db.db_setup import USE_MONGO, USE_SQL diff --git a/mealie/db/db_setup.py b/mealie/db/db_setup.py index 2f5ece9b8..aec393ecd 100644 --- a/mealie/db/db_setup.py +++ b/mealie/db/db_setup.py @@ -1,4 +1,4 @@ -from settings import DATA_DIR, USE_MONGO, USE_SQL +from app_config import DATA_DIR, USE_MONGO, USE_SQL from db.sql.db_session import globa_init as sql_global_init diff --git a/mealie/db/db_themes.py b/mealie/db/db_themes.py index bdb499856..14a378b76 100644 --- a/mealie/db/db_themes.py +++ b/mealie/db/db_themes.py @@ -1,4 +1,4 @@ -from settings import USE_MONGO, USE_SQL +from app_config import USE_MONGO, USE_SQL from db.db_base import BaseDocument from db.db_setup import USE_MONGO, USE_SQL diff --git a/mealie/db/mongo/mongo_setup.py b/mealie/db/mongo/mongo_setup.py index 616a7d24b..da584396e 100644 --- a/mealie/db/mongo/mongo_setup.py +++ b/mealie/db/mongo/mongo_setup.py @@ -1,5 +1,5 @@ import mongoengine -from settings import DB_HOST, DB_PASSWORD, DB_PORT, DB_USERNAME, MEALIE_DB_NAME +from app_config import DB_HOST, DB_PASSWORD, DB_PORT, DB_USERNAME, MEALIE_DB_NAME from utils.logger import logger diff --git a/mealie/models/backup_models.py b/mealie/models/backup_models.py index 9f2f49604..8502c3cf0 100644 --- a/mealie/models/backup_models.py +++ b/mealie/models/backup_models.py @@ -1,3 +1,4 @@ +from datetime import datetime from typing import List, Optional from pydantic import BaseModel @@ -16,14 +17,45 @@ class BackupJob(BaseModel): } +class LocalBackup(BaseModel): + name: str + date: datetime + + class Imports(BaseModel): - imports: List[str] + imports: List[LocalBackup] templates: List[str] class Config: schema_extra = { "example": { - "imports": ["sample_data.zip", "sampe_data2.zip"], + "imports": [ + { + "name": "AutoBackup_12-1-2020.zip", + "date": datetime.now(), + } + ], "templates": ["recipes.md", "custom_template.md"], } } + + +class ImportJob(BaseModel): + name: str + recipes: bool + force: bool = False + rebase: bool = False + themes: bool = False + settings: bool = False + + class Config: + schema_extra = { + "example": { + "name": "my_local_backup.zip", + "recipes": True, + "force": False, + "rebase": False, + "themes": False, + "settings": False + } + } diff --git a/mealie/services/backups/exports.py b/mealie/services/backups/exports.py index 28091c8c3..dbe19f3f8 100644 --- a/mealie/services/backups/exports.py +++ b/mealie/services/backups/exports.py @@ -7,7 +7,7 @@ from jinja2 import Template from services.meal_services import MealPlan from services.recipe_services import Recipe from services.settings_services import SiteSettings, SiteTheme -from settings import BACKUP_DIR, IMG_DIR, TEMP_DIR, TEMPLATE_DIR +from app_config import BACKUP_DIR, IMG_DIR, TEMP_DIR, TEMPLATE_DIR from utils.logger import logger diff --git a/mealie/services/backups/imports.py b/mealie/services/backups/imports.py index 2b1f7b370..3a82b899d 100644 --- a/mealie/services/backups/imports.py +++ b/mealie/services/backups/imports.py @@ -6,7 +6,7 @@ from typing import List from services.recipe_services import Recipe from services.settings_services import SiteSettings, SiteTheme -from settings import BACKUP_DIR, IMG_DIR, TEMP_DIR +from app_config import BACKUP_DIR, IMG_DIR, TEMP_DIR from utils.logger import logger @@ -74,7 +74,6 @@ class ImportDatabase: recipe_dict = json.loads(f.read()) recipe_dict = ImportDatabase._recipe_migration(recipe_dict) - recipe_obj = Recipe(**recipe_dict) recipe_obj.save_to_db() successful_imports.append(recipe.stem) diff --git a/mealie/services/migrations/chowdown.py b/mealie/services/migrations/chowdown.py index 061a2ac8c..24a3f85a5 100644 --- a/mealie/services/migrations/chowdown.py +++ b/mealie/services/migrations/chowdown.py @@ -4,7 +4,7 @@ from pathlib import Path import git import yaml from services.recipe_services import Recipe -from settings import IMG_DIR +from app_config import IMG_DIR try: from yaml import CLoader as Loader diff --git a/mealie/services/migrations/nextcloud.py b/mealie/services/migrations/nextcloud.py index 3cac03ef7..8d124b004 100644 --- a/mealie/services/migrations/nextcloud.py +++ b/mealie/services/migrations/nextcloud.py @@ -6,7 +6,7 @@ from pathlib import Path from services.recipe_services import Recipe from services.scrape_services import normalize_data, process_recipe_data -from settings import IMG_DIR, TEMP_DIR +from app_config import IMG_DIR, TEMP_DIR CWD = Path(__file__).parent MIGRTAION_DIR = CWD.parent.parent.joinpath("data", "migration") diff --git a/mealie/utils/api_docs.py b/mealie/utils/api_docs.py index 926e9359d..823afee0a 100644 --- a/mealie/utils/api_docs.py +++ b/mealie/utils/api_docs.py @@ -1,6 +1,6 @@ import json -from settings import BASE_DIR +from app_config import BASE_DIR """Script to export the ReDoc documentation page into a standalone HTML file.""" @@ -31,10 +31,11 @@ HTML_TEMPLATE = """ """ -out_path = BASE_DIR.joinpath("temp", "index.html") - def generate_api_docs(app): + out_dir = BASE_DIR.joinpath(".temp") + out_dir.mkdir(parents=True, exist_ok=True) + out_path = out_dir.joinpath("index.html") with open(out_path, "w") as fd: out_path.parent.mkdir(exist_ok=True) print(HTML_TEMPLATE % json.dumps(app.openapi()), file=fd) diff --git a/mealie/utils/startup.py b/mealie/utils/startup.py index f5aba560e..3eccdc943 100644 --- a/mealie/utils/startup.py +++ b/mealie/utils/startup.py @@ -1,6 +1,6 @@ from pathlib import Path -from settings import REQUIRED_DIRS +from app_config import REQUIRED_DIRS CWD = Path(__file__).parent