# app/config.py import configparser import os BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__),'..')) GLOBAL_CONFIG = configparser.ConfigParser() GLOBAL_CONFIG.read(os.getenv("APP_CONFIG_FILE", "config.ini")) class Config: SECRET_KEY = os.getenv("SECRET_KEY", "dev-secret") SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "sqlite:///dev.db") SQLALCHEMY_TRACK_MODIFICATIONS = False SECRET_KEY = os.getenv("SECRET_KEY", "cakebaker") # 覆盖优先 VSCODE_WEB_URL = GLOBAL_CONFIG['VSCODE_WEB']['url'] USER_DATA_DIR = GLOBAL_CONFIG['USER_DATA']['dir'] COURSE_DATA_DIR = GLOBAL_CONFIG['COURSE_DATA']['dir'] # socketio / cors 配置也可以放这里 SOCKETIO_PING_TIMEOUT = 60 SOCKETIO_PING_INTERVAL = 5 MARKDOWN_DIR = os.path.join(BASE_DIR, "books", "markdown") STATIC_DIR = os.path.join(BASE_DIR, "apps", "static") IMAGE_DIR = "image" # 你的学生工作区根目录(如无就放到项目 data 目录) STUDENT_WORKSPACE_ROOT = os.getenv( "STUDENT_WORKSPACE_ROOT", os.path.join(BASE_DIR, "data", "workspaces") ) # WSL 相关 VSCODE_WEB_PATH = { "is_wsl": GLOBAL_CONFIG.getboolean("VSCODE_WEB_PATH", "is_wsl", fallback=False), "windows_path": GLOBAL_CONFIG.get("VSCODE_WEB_PATH", "windows_path", fallback=""), "wsl_path": GLOBAL_CONFIG.get("VSCODE_WEB_PATH", "wsl_path", fallback=""), } MONGO_URI = GLOBAL_CONFIG['MONGO']['uri'] TENCENT_COS = { "secret_id": GLOBAL_CONFIG['TENCENT_COS']['secret_id'], "secret_key": GLOBAL_CONFIG['TENCENT_COS']['secret_key'], "bucket": GLOBAL_CONFIG['TENCENT_COS']['bucket'], "region": GLOBAL_CONFIG['TENCENT_COS']['region'], }