first commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import secrets
|
||||
from pathlib import Path
|
||||
|
||||
from flask import Flask, send_from_directory
|
||||
|
||||
from . import db
|
||||
from .auth import auth_bp
|
||||
from .constants import CATEGORIES, DAYPARTS, ITEM_KIND_LABELS, ITEM_KIND_SINGULAR_LABELS
|
||||
from .main import main_bp
|
||||
|
||||
|
||||
def create_app() -> Flask:
|
||||
root_dir = Path(__file__).resolve().parent.parent
|
||||
data_dir = Path(os.environ.get("NOURI_DATA_DIR", root_dir / "data")).resolve()
|
||||
upload_dir = data_dir / "uploads"
|
||||
db_path = data_dir / "nouri.sqlite3"
|
||||
|
||||
data_dir.mkdir(parents=True, exist_ok=True)
|
||||
upload_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
app = Flask(__name__, instance_relative_config=False)
|
||||
app.config.update(
|
||||
SECRET_KEY=os.environ.get("NOURI_SECRET_KEY", secrets.token_hex(24)),
|
||||
DATABASE_PATH=str(db_path),
|
||||
DATA_DIR=str(data_dir),
|
||||
UPLOAD_FOLDER=str(upload_dir),
|
||||
MAX_CONTENT_LENGTH=int(os.environ.get("NOURI_MAX_UPLOAD_MB", "5")) * 1024 * 1024,
|
||||
)
|
||||
|
||||
db.init_app(app)
|
||||
db.init_db_if_needed(app)
|
||||
|
||||
app.register_blueprint(auth_bp)
|
||||
app.register_blueprint(main_bp)
|
||||
|
||||
@app.context_processor
|
||||
def inject_globals() -> dict[str, object]:
|
||||
return {
|
||||
"item_kind_labels": ITEM_KIND_LABELS,
|
||||
"item_kind_singular_labels": ITEM_KIND_SINGULAR_LABELS,
|
||||
"category_suggestions": CATEGORIES,
|
||||
"daypart_suggestions": DAYPARTS,
|
||||
}
|
||||
|
||||
@app.get("/uploads/<path:filename>")
|
||||
def uploaded_file(filename: str):
|
||||
return send_from_directory(app.config["UPLOAD_FOLDER"], filename)
|
||||
|
||||
return app
|
||||
Reference in New Issue
Block a user