first commit

This commit is contained in:
2026-04-12 10:36:13 +02:00
commit 21014c246e
22 changed files with 2461 additions and 0 deletions
+52
View File
@@ -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