fix 非str类型设置保存

This commit is contained in:
jxxghp
2025-05-15 12:00:09 +08:00
parent 1dadf56c42
commit 22ae8b8f87
2 changed files with 29 additions and 14 deletions
+18 -8
View File
@@ -1,4 +1,5 @@
import copy import copy
import json
import os import os
import re import re
import secrets import secrets
@@ -361,13 +362,16 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
if field_name in fields_not_keep_spaces: if field_name in fields_not_keep_spaces:
value = re.sub(r"\s+", "", value) value = re.sub(r"\s+", "", value)
return value, str(value) != str(original_value) return value, str(value) != str(original_value)
# # 后续考虑支持 list 类型的处理 # 支持 list 类型的处理
# elif expected_type is list: elif expected_type is list:
# if isinstance(value, list): if isinstance(value, list):
# return value, False return value, str(value) != str(original_value)
# if isinstance(value, str): if isinstance(value, str):
# items = [item.strip() for item in value.split(",") if item.strip()] items = json.loads(value)
# return items, items != original_value.split(",") if isinstance(original_value, list):
return items, items != original_value
else:
return items, str(items) != str(original_value)
# 可根据需要添加更多类型处理 # 可根据需要添加更多类型处理
else: else:
return value, str(value) != str(original_value) return value, str(value) != str(original_value)
@@ -408,7 +412,13 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
logger.warning(message) logger.warning(message)
return False, message return False, message
else: else:
set_key(SystemUtils.get_env_path(), field.name, str(converted_value) if converted_value is not None else "") # 如果是列表、字典或集合类型,将其转换为JSON字符串
if isinstance(converted_value, (list, dict, set)):
value_to_write = json.dumps(converted_value)
else:
value_to_write = str(converted_value) if converted_value is not None else ""
set_key(SystemUtils.get_env_path(), field.name, value_to_write)
if is_converted: if is_converted:
logger.info(f"配置项 '{field.name}' 已自动修正并写入到 'app.env' 文件") logger.info(f"配置项 '{field.name}' 已自动修正并写入到 'app.env' 文件")
return True, message return True, message
+11 -6
View File
@@ -89,12 +89,17 @@ class WallpaperHelper(metaclass=Singleton):
wallpaper_list = [] wallpaper_list = []
resp = self.req.get_res(settings.CUSTOMIZE_WALLPAPER_API_URL) resp = self.req.get_res(settings.CUSTOMIZE_WALLPAPER_API_URL)
if resp and resp.status_code == 200: if resp and resp.status_code == 200:
try: # 如果返回的是图片格式
result = resp.json() content_type = resp.headers.get('Content-Type')
if isinstance(result, list) or isinstance(result, dict) or isinstance(result, str): if content_type and content_type.lower() == 'image/jpeg':
wallpaper_list = find_files_with_suffixes(result, settings.SECURITY_IMAGE_SUFFIXES) wallpaper_list.append(resp.url)
except Exception as err: else:
print(str(err)) try:
result = resp.json()
if isinstance(result, list) or isinstance(result, dict) or isinstance(result, str):
wallpaper_list = find_files_with_suffixes(result, settings.SECURITY_IMAGE_SUFFIXES)
except Exception as err:
print(str(err))
return wallpaper_list return wallpaper_list
else: else:
return [] return []