48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
from flask import Flask, render_template, send_from_directory
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
# Конфигурация демо содержит только разрешённые расширения для browser picker.
|
|
DEFAULT_CONFIG = {"allowedExt": [".pdf", ".doc", ".docx", ".txt", ".md"]}
|
|
try:
|
|
with (ROOT / "config.json").open(encoding="utf-8") as config_file:
|
|
CONFIG = json.load(config_file)
|
|
except (OSError, json.JSONDecodeError):
|
|
CONFIG = DEFAULT_CONFIG
|
|
|
|
|
|
VERSION = "0.1.12"
|
|
|
|
# Flask нужен здесь только как статический сервер HTML, CSS и ES-модулей.
|
|
app = Flask(__name__, template_folder="templates", static_folder="static")
|
|
|
|
|
|
@app.route("/")
|
|
def index():
|
|
"""Возвращает demo-страницу и передаёт в неё версию и JSON-конфигурацию."""
|
|
return render_template("index.html", version=VERSION, config=CONFIG)
|
|
|
|
|
|
@app.route("/health")
|
|
def health():
|
|
"""Возвращает 200 для liveness-проверки платформы."""
|
|
return "ok", 200
|
|
|
|
|
|
@app.get("/upload-frontend/<path:filename>")
|
|
def upload_frontend(filename):
|
|
"""Отдаёт один frontend-файл из изолированного каталога upload/frontend."""
|
|
return send_from_directory(ROOT / "upload" / "frontend", filename)
|
|
|
|
|
|
@app.get("/file-picker/<path:filename>")
|
|
def file_picker_dist(filename):
|
|
"""Отдаёт собранный универсальный picker-бандл из каталога dist."""
|
|
return send_from_directory(ROOT / "dist", filename)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(debug=False, host="0.0.0.0", port=5000) |