from datetime import datetime from app.extensions import db class SystemSetting(db.Model): __tablename__ = 'system_settings' id = db.Column(db.Integer, primary_key=True) key = db.Column(db.String(64), unique=True, nullable=False, index=True) value = db.Column(db.Text, nullable=True) value_type = db.Column(db.Enum('string', 'integer', 'boolean', 'json'), default='string') description = db.Column(db.String(255), nullable=True) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def __repr__(self): return f'' @classmethod def get(cls, key, default=None): setting = cls.query.filter_by(key=key).first() if setting is None: return default return setting.value @classmethod def set(cls, key, value, description=None): setting = cls.query.filter_by(key=key).first() if setting: setting.value = str(value) setting.updated_at = datetime.utcnow() else: setting = cls(key=key, value=str(value), description=description) db.session.add(setting) db.session.commit() # 默认配置项 DEFAULTS = { 'site_name': ('个人资料库', '站点名称'), 'site_description': ('我的个人多媒体资料管理系统', '站点描述'), 'allow_register': ('true', '是否允许用户注册'), 'max_upload_mb': ('500', '单次最大上传大小(MB)'), 'allowed_types': ('text,image,audio,video', '允许的资源类型'), 'enable_magnet': ('true', '是否启用磁力下载'), 'enable_url_download': ('true', '是否启用 URL 下载'), }