feat: 系统配置增加网站基础配置
- 网站名称设置 - 底部信息设置(支持HTML) - 最大上传文件大小设置(MB) - 缓存有效期设置(天) - 默认源语言/目标语言设置 - 翻译缓存开关 - 访客翻译开关 - 邮件通知开关 - 新增 get_site_config() 函数供其他模块使用
This commit is contained in:
83
admin.py
83
admin.py
@@ -313,35 +313,56 @@ def clear_cache():
|
||||
@admin_required
|
||||
def settings():
|
||||
"""系统配置"""
|
||||
if request.method == 'POST':
|
||||
data = request.json if request.is_json else request.form
|
||||
|
||||
for key, value in data.items():
|
||||
SystemConfig.set(key, value)
|
||||
|
||||
if request.is_json:
|
||||
return jsonify({'success': True})
|
||||
flash('配置已保存', 'success')
|
||||
|
||||
# 获取所有配置
|
||||
configs = SystemConfig.query.all()
|
||||
config_dict = {c.key: c.value for c in configs}
|
||||
|
||||
# 获取动态配置
|
||||
dynamic_configs = DynamicConfig.query.all()
|
||||
|
||||
# 获取LLM动态配置
|
||||
llm_config = get_llm_config()
|
||||
|
||||
# 获取网站基础配置
|
||||
site_config = {
|
||||
'site_name': DynamicConfig.get('site_name', 'PDF翻译助手'),
|
||||
'site_footer': DynamicConfig.get('site_footer', '© 2026 PDF翻译助手'),
|
||||
'max_file_size': DynamicConfig.get('max_file_size', 50),
|
||||
'cache_expire_days': DynamicConfig.get('cache_expire_days', 30),
|
||||
'enable_email_notify': DynamicConfig.get('enable_email_notify', True),
|
||||
'enable_cache': DynamicConfig.get('enable_cache', True),
|
||||
'enable_guest': DynamicConfig.get('enable_guest', True),
|
||||
'default_source_lang': DynamicConfig.get('default_source_lang', 'en'),
|
||||
'default_target_lang': DynamicConfig.get('default_target_lang', 'zh'),
|
||||
}
|
||||
|
||||
return render_template('admin/settings.html',
|
||||
configs=config_dict,
|
||||
dynamic_configs=dynamic_configs,
|
||||
user_limits=USER_LIMITS,
|
||||
membership_plans=MEMBERSHIP_PLANS,
|
||||
llm_config=llm_config
|
||||
llm_config=llm_config,
|
||||
site_config=site_config
|
||||
)
|
||||
|
||||
|
||||
@admin_bp.route('/settings/site', methods=['POST'])
|
||||
@admin_required
|
||||
def save_site_settings():
|
||||
"""保存网站基础配置"""
|
||||
data = request.json
|
||||
|
||||
# 保存每个配置项
|
||||
for key, value in data.items():
|
||||
if key in ['max_file_size', 'cache_expire_days']:
|
||||
DynamicConfig.set(f'site_{key}', int(value), category='site', value_type='int', user_id=session.get('user_id'))
|
||||
elif key in ['enable_email_notify', 'enable_cache', 'enable_guest']:
|
||||
DynamicConfig.set(f'site_{key}', bool(value), category='site', value_type='bool', user_id=session.get('user_id'))
|
||||
else:
|
||||
DynamicConfig.set(f'site_{key}', value, category='site', user_id=session.get('user_id'))
|
||||
|
||||
# 记录日志
|
||||
log = OperationLog(
|
||||
user_id=session.get('user_id'),
|
||||
username='admin',
|
||||
action='save_site_settings',
|
||||
detail='保存网站基础配置'
|
||||
)
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'success': True})
|
||||
|
||||
|
||||
# ==================== 用户权限配置 ====================
|
||||
@admin_bp.route('/settings/user-limits', methods=['GET', 'POST'])
|
||||
@admin_required
|
||||
@@ -1450,4 +1471,20 @@ def init_default_backup_llm():
|
||||
def get_backup_llm_configs():
|
||||
"""获取所有备用大模型配置(供其他模块使用)"""
|
||||
configs = BackupLLMConfig.query.filter_by(is_active=True).order_by(BackupLLMConfig.sort_order).all()
|
||||
return [c.to_dict() for c in configs]
|
||||
return [c.to_dict() for c in configs]
|
||||
|
||||
|
||||
# ==================== 获取网站基础配置(供其他模块使用) ====================
|
||||
def get_site_config():
|
||||
"""获取网站基础配置"""
|
||||
return {
|
||||
'site_name': DynamicConfig.get('site_name', 'PDF翻译助手'),
|
||||
'site_footer': DynamicConfig.get('site_footer', '© 2026 PDF翻译助手'),
|
||||
'max_file_size': DynamicConfig.get('max_file_size', 50),
|
||||
'cache_expire_days': DynamicConfig.get('cache_expire_days', 30),
|
||||
'enable_email_notify': DynamicConfig.get('enable_email_notify', True),
|
||||
'enable_cache': DynamicConfig.get('enable_cache', True),
|
||||
'enable_guest': DynamicConfig.get('enable_guest', True),
|
||||
'default_source_lang': DynamicConfig.get('default_source_lang', 'en'),
|
||||
'default_target_lang': DynamicConfig.get('default_target_lang', 'zh'),
|
||||
}
|
||||
Reference in New Issue
Block a user