Files
ai-app-database/config.py
T
huty 9c38f9ed9a
CI — Docker Build & Push / Build & Push Image (push) Failing after 14m37s
新增 word 文件预览功能
2026-04-28 11:11:12 +09:00

58 lines
1.6 KiB
Python

import os
from datetime import timedelta
from dotenv import load_dotenv
load_dotenv()
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key-please-change')
SQLALCHEMY_DATABASE_URI = os.environ.get(
'DATABASE_URL',
'mysql+pymysql://root:password@localhost:3306/resource_library'
)
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 上传配置
UPLOAD_FOLDER = os.path.join(BASE_DIR, 'app', 'static', 'uploads')
MAX_CONTENT_LENGTH = int(os.environ.get('MAX_UPLOAD_SIZE_MB', 500)) * 1024 * 1024
# Session
PERMANENT_SESSION_LIFETIME = timedelta(hours=24)
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
# CSRF
WTF_CSRF_ENABLED = True
WTF_CSRF_TIME_LIMIT = 3600
# 允许的文件类型
ALLOWED_TEXT_EXT = {'txt', 'md', 'csv', 'json', 'xml', 'log', 'html', 'htm', 'doc', 'docx'}
ALLOWED_IMAGE_EXT = {'jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'svg', 'ico'}
ALLOWED_AUDIO_EXT = {'mp3', 'wav', 'ogg', 'flac', 'm4a', 'aac', 'wma'}
ALLOWED_VIDEO_EXT = {'mp4', 'webm', 'avi', 'mkv', 'mov', 'wmv', 'flv', 'm4v'}
@classmethod
def all_allowed_extensions(cls):
return (cls.ALLOWED_TEXT_EXT | cls.ALLOWED_IMAGE_EXT |
cls.ALLOWED_AUDIO_EXT | cls.ALLOWED_VIDEO_EXT)
class DevelopmentConfig(Config):
DEBUG = True
class ProductionConfig(Config):
DEBUG = False
SESSION_COOKIE_SECURE = True
WTF_CSRF_SSL_STRICT = True
config = {
'development': DevelopmentConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}