54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""contracts-flask v2.0 — полный перенос с ВМ на Flask.
|
|
Больше никаких прокси на contracts.kube5s.ru — всё локально.
|
|
"""
|
|
import sys, os
|
|
|
|
# Штурвал: stdlib site.py мешает нашему site/ пакету.
|
|
# Добавляем родительскую директорию в начало sys.path,
|
|
# удаляем stdlib site из кэша — наш site/ будет найден первым.
|
|
_parent = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
if _parent not in sys.path:
|
|
sys.path.insert(0, _parent)
|
|
if 'site' in sys.modules and not hasattr(sys.modules['site'], '__path__'):
|
|
del sys.modules['site']
|
|
|
|
from flask import Flask
|
|
from site.config import VERSION, MAX_CONTENT_LENGTH
|
|
from site.routes import register_routes
|
|
|
|
|
|
def create_app():
|
|
app = Flask(__name__)
|
|
app.config["VERSION"] = VERSION
|
|
app.config["MAX_CONTENT_LENGTH"] = MAX_CONTENT_LENGTH
|
|
|
|
# DB auto-seed — schema migration + seed prompts + crash recovery
|
|
_init_db()
|
|
|
|
# Регистрация всех blueprint'ов
|
|
register_routes(app)
|
|
|
|
# no_cache на все ответы
|
|
@app.after_request
|
|
def no_cache(response):
|
|
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
|
|
response.headers["Pragma"] = "no-cache"
|
|
response.headers["Expires"] = "0"
|
|
return response
|
|
|
|
return app
|
|
|
|
|
|
def _init_db():
|
|
"""Создать БД + схему + seed prompts. SQLite — всё в одном файле /tmp."""
|
|
from site.db.connection import init_db
|
|
init_db()
|
|
try:
|
|
from site.db import prompts as db_prompts
|
|
db_prompts.seed_defaults()
|
|
except Exception:
|
|
pass
|
|
|
|
|
|
app = create_app()
|