Files
ai-app-database/app/models/setting.py
T
huty f103148ebf feat: 初始化个人资料库 Web 应用
基于 Flask + MySQL + Bootstrap 5 的全栈个人资料库管理系统。

主要功能:
- 管理员/普通用户双角色权限体系,全站登录保护
- 资源管理:文本、图片、音频、视频四类资源
- 三种添加方式:本地上传(拖拽)、URL 后台下载、磁力下载(aria2c)
- 在线预览:文本、图片、HTML5 音视频播放器
- 安全:bcrypt 加盐密码哈希、CSRF 防护、SQLAlchemy ORM 防注入

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:16:59 +09:00

48 lines
1.8 KiB
Python

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'<SystemSetting {self.key}={self.value}>'
@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 下载'),
}