fix settings api

This commit is contained in:
jxxghp 2024-02-15 08:39:55 +08:00
parent 24c2d3f8ca
commit 9f450dd8be

View File

@ -10,6 +10,7 @@ from fastapi.responses import StreamingResponse
from app import schemas from app import schemas
from app.chain.search import SearchChain from app.chain.search import SearchChain
from app.core.config import settings from app.core.config import settings
from app.core.module import ModuleManager
from app.core.security import verify_token from app.core.security import verify_token
from app.db.systemconfig_oper import SystemConfigOper from app.db.systemconfig_oper import SystemConfigOper
from app.helper.message import MessageHelper from app.helper.message import MessageHelper
@ -85,8 +86,12 @@ def get_setting(key: str,
""" """
查询系统设置 查询系统设置
""" """
if hasattr(settings, key):
value = getattr(settings, key)
else:
value = SystemConfigOper().get(key)
return schemas.Response(success=True, data={ return schemas.Response(success=True, data={
"value": SystemConfigOper().get(key) "value": value
}) })
@ -96,6 +101,9 @@ def set_setting(key: str, value: Union[list, dict, str, int] = None,
""" """
更新系统设置 更新系统设置
""" """
if hasattr(settings, key):
setattr(settings, key, value)
else:
SystemConfigOper().set(key, value) SystemConfigOper().set(key, value)
return schemas.Response(success=True) return schemas.Response(success=True)
@ -136,21 +144,22 @@ def get_logging(token: str, length: int = 50):
) )
log_path = settings.LOG_PATH / 'moviepilot.log' log_path = settings.LOG_PATH / 'moviepilot.log'
def log_generator(): def log_generator():
# 读取文件末尾50行不使用tailer模块 # 读取文件末尾50行不使用tailer模块
with open(log_path, 'r', encoding='utf-8') as f: with open(log_path, 'r', encoding='utf-8') as f:
for line in f.readlines()[-max(length, 50):]: for line in f.readlines()[-max(length, 50):]:
yield 'data: %s\n\n' % line yield 'data: %s\n\n' % line
while True: while True:
for text in tailer.follow(open(log_path, 'r', encoding='utf-8')): for t in tailer.follow(open(log_path, 'r', encoding='utf-8')):
yield 'data: %s\n\n' % (text or '') yield 'data: %s\n\n' % (t or '')
time.sleep(1) time.sleep(1)
# 根据length参数返回不同的响应 # 根据length参数返回不同的响应
if length == -1: if length == -1:
# 返回全部日志作为文本响应 # 返回全部日志作为文本响应
with open(log_path, 'r', encoding='utf-8') as f: with open(log_path, 'r', encoding='utf-8') as file:
text = f.read() text = file.read()
return Response(content=text, media_type="text/plain") return Response(content=text, media_type="text/plain")
else: else:
# 返回SSE流响应 # 返回SSE流响应
@ -241,6 +250,16 @@ def restart_system(_: schemas.TokenPayload = Depends(verify_token)):
return schemas.Response(success=ret, message=msg) return schemas.Response(success=ret, message=msg)
@router.get("/reload", summary="重新加载模块", response_model=schemas.Response)
def reload_module(_: schemas.TokenPayload = Depends(verify_token)):
"""
重新加载模块
"""
ModuleManager().stop()
ModuleManager().load_modules()
return schemas.Response(success=True)
@router.get("/runscheduler", summary="运行服务", response_model=schemas.Response) @router.get("/runscheduler", summary="运行服务", response_model=schemas.Response)
def execute_command(jobid: str, def execute_command(jobid: str,
_: schemas.TokenPayload = Depends(verify_token)): _: schemas.TokenPayload = Depends(verify_token)):