rename settings.py to app_config.py

This commit is contained in:
Hayden 2021-01-16 09:07:06 -09:00
commit 710e54f4cc
18 changed files with 79 additions and 31 deletions

1
.gitignore vendored
View file

@ -7,6 +7,7 @@ __pycache__/
docs/site/ docs/site/
mealie/temp/* mealie/temp/*
mealie/temp/api.html mealie/temp/api.html
.temp/
mealie/data/backups/* mealie/data/backups/*

View file

@ -3,9 +3,16 @@ from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
import utils.startup as startup import utils.startup as startup
from routes import (backup_routes, meal_routes, migration_routes, from app_config import PORT, PRODUCTION, WEB_PATH, docs_url, redoc_url
recipe_routes, setting_routes, static_routes, user_routes) from routes import (
from settings import PORT, PRODUCTION, WEB_PATH, docs_url, redoc_url backup_routes,
meal_routes,
migration_routes,
recipe_routes,
setting_routes,
static_routes,
user_routes,
)
from utils.api_docs import generate_api_docs from utils.api_docs import generate_api_docs
from utils.logger import logger from utils.logger import logger
@ -19,11 +26,13 @@ app = FastAPI(
redoc_url=redoc_url, 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)) app.mount("/static", StaticFiles(directory=WEB_PATH, html=True))
# API Routes
def api_routers():
# First
app.include_router(recipe_routes.router) app.include_router(recipe_routes.router)
app.include_router(meal_routes.router) app.include_router(meal_routes.router)
app.include_router(setting_routes.router) app.include_router(setting_routes.router)
@ -31,6 +40,12 @@ app.include_router(backup_routes.router)
app.include_router(user_routes.router) app.include_router(user_routes.router)
app.include_router(migration_routes.router) app.include_router(migration_routes.router)
if PRODUCTION:
mount_static_files()
api_routers()
# API 404 Catch all CALL AFTER ROUTERS # API 404 Catch all CALL AFTER ROUTERS
@app.get("/api/{full_path:path}", status_code=404, include_in_schema=False) @app.get("/api/{full_path:path}", status_code=404, include_in_schema=False)
def invalid_api(): def invalid_api():

View file

@ -20,7 +20,7 @@ DEBUG_DIR = DATA_DIR.joinpath("debug")
MIGRATION_DIR = DATA_DIR.joinpath("migration") MIGRATION_DIR = DATA_DIR.joinpath("migration")
TEMPLATE_DIR = DATA_DIR.joinpath("templates") TEMPLATE_DIR = DATA_DIR.joinpath("templates")
TINYDB_DIR = DATA_DIR.joinpath("db") TINYDB_DIR = DATA_DIR.joinpath("db")
TEMP_DIR = DATA_DIR.joinpath("temp") TEMP_DIR = DATA_DIR.joinpath(".temp")
REQUIRED_DIRS = [ REQUIRED_DIRS = [
DATA_DIR, DATA_DIR,

Binary file not shown.

View file

@ -2,7 +2,7 @@ import json
from typing import Union from typing import Union
import mongoengine import mongoengine
from settings import USE_MONGO, USE_SQL from app_config import USE_MONGO, USE_SQL
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
from db.sql.db_session import create_session from db.sql.db_session import create_session

View file

@ -1,6 +1,6 @@
from typing import List 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_base import BaseDocument
from db.db_setup import USE_MONGO, USE_SQL from db.db_setup import USE_MONGO, USE_SQL

View file

@ -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_base import BaseDocument
from db.mongo.recipe_models import RecipeDocument from db.mongo.recipe_models import RecipeDocument

View file

@ -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_base import BaseDocument
from db.db_setup import USE_MONGO, USE_SQL from db.db_setup import USE_MONGO, USE_SQL

View file

@ -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 from db.sql.db_session import globa_init as sql_global_init

View file

@ -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_base import BaseDocument
from db.db_setup import USE_MONGO, USE_SQL from db.db_setup import USE_MONGO, USE_SQL

View file

@ -1,5 +1,5 @@
import mongoengine 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 from utils.logger import logger

View file

@ -1,3 +1,4 @@
from datetime import datetime
from typing import List, Optional from typing import List, Optional
from pydantic import BaseModel from pydantic import BaseModel
@ -16,14 +17,45 @@ class BackupJob(BaseModel):
} }
class LocalBackup(BaseModel):
name: str
date: datetime
class Imports(BaseModel): class Imports(BaseModel):
imports: List[str] imports: List[LocalBackup]
templates: List[str] templates: List[str]
class Config: class Config:
schema_extra = { schema_extra = {
"example": { "example": {
"imports": ["sample_data.zip", "sampe_data2.zip"], "imports": [
{
"name": "AutoBackup_12-1-2020.zip",
"date": datetime.now(),
}
],
"templates": ["recipes.md", "custom_template.md"], "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
}
}

View file

@ -7,7 +7,7 @@ from jinja2 import Template
from services.meal_services import MealPlan from services.meal_services import MealPlan
from services.recipe_services import Recipe from services.recipe_services import Recipe
from services.settings_services import SiteSettings, SiteTheme 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 from utils.logger import logger

View file

@ -6,7 +6,7 @@ from typing import List
from services.recipe_services import Recipe from services.recipe_services import Recipe
from services.settings_services import SiteSettings, SiteTheme 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 from utils.logger import logger
@ -74,7 +74,6 @@ class ImportDatabase:
recipe_dict = json.loads(f.read()) recipe_dict = json.loads(f.read())
recipe_dict = ImportDatabase._recipe_migration(recipe_dict) recipe_dict = ImportDatabase._recipe_migration(recipe_dict)
recipe_obj = Recipe(**recipe_dict) recipe_obj = Recipe(**recipe_dict)
recipe_obj.save_to_db() recipe_obj.save_to_db()
successful_imports.append(recipe.stem) successful_imports.append(recipe.stem)

View file

@ -4,7 +4,7 @@ from pathlib import Path
import git import git
import yaml import yaml
from services.recipe_services import Recipe from services.recipe_services import Recipe
from settings import IMG_DIR from app_config import IMG_DIR
try: try:
from yaml import CLoader as Loader from yaml import CLoader as Loader

View file

@ -6,7 +6,7 @@ from pathlib import Path
from services.recipe_services import Recipe from services.recipe_services import Recipe
from services.scrape_services import normalize_data, process_recipe_data 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 CWD = Path(__file__).parent
MIGRTAION_DIR = CWD.parent.parent.joinpath("data", "migration") MIGRTAION_DIR = CWD.parent.parent.joinpath("data", "migration")

View file

@ -1,6 +1,6 @@
import json 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.""" """Script to export the ReDoc documentation page into a standalone HTML file."""
@ -31,10 +31,11 @@ HTML_TEMPLATE = """<!DOCTYPE html>
</html> </html>
""" """
out_path = BASE_DIR.joinpath("temp", "index.html")
def generate_api_docs(app): 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: with open(out_path, "w") as fd:
out_path.parent.mkdir(exist_ok=True) out_path.parent.mkdir(exist_ok=True)
print(HTML_TEMPLATE % json.dumps(app.openapi()), file=fd) print(HTML_TEMPLATE % json.dumps(app.openapi()), file=fd)

View file

@ -1,6 +1,6 @@
from pathlib import Path from pathlib import Path
from settings import REQUIRED_DIRS from app_config import REQUIRED_DIRS
CWD = Path(__file__).parent CWD = Path(__file__).parent