mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from fastapi import Request
|
|
from sqlbot_xpack.config.arg_manage import get_group_args, save_group_args
|
|
from sqlbot_xpack.config.model import SysArgModel
|
|
import json
|
|
from common.core.deps import SessionDep
|
|
from sqlbot_xpack.file_utils import SQLBotFileUtils
|
|
|
|
async def get_parameter_args(session: SessionDep) -> list[SysArgModel]:
|
|
group_args = await get_group_args(session=session)
|
|
return [x for x in group_args if not x.pkey.startswith('appearance.')]
|
|
|
|
async def get_groups(session: SessionDep, flag: str) -> list[SysArgModel]:
|
|
group_args = await get_group_args(session=session, flag=flag)
|
|
return group_args
|
|
|
|
async def save_parameter_args(session: SessionDep, request: Request):
|
|
allow_file_mapping = {
|
|
""" "test_logo": { "types": [".jpg", ".jpeg", ".png"], "size": 5 * 1024 * 1024 } """
|
|
}
|
|
form_data = await request.form()
|
|
files = form_data.getlist("files")
|
|
json_text = form_data.get("data")
|
|
sys_args = [
|
|
SysArgModel(**{**item, "pkey": f"{item['pkey']}"})
|
|
for item in json.loads(json_text)
|
|
if "pkey" in item
|
|
]
|
|
if not sys_args:
|
|
return
|
|
file_mapping = None
|
|
if files:
|
|
file_mapping = {}
|
|
for file in files:
|
|
origin_file_name = file.filename
|
|
file_name, flag_name = SQLBotFileUtils.split_filename_and_flag(origin_file_name)
|
|
file.filename = file_name
|
|
allow_limit_obj = allow_file_mapping.get(flag_name)
|
|
if allow_limit_obj:
|
|
SQLBotFileUtils.check_file(file=file, file_types=allow_limit_obj.get("types"), limit_file_size=allow_limit_obj.get("size"))
|
|
else:
|
|
raise Exception(f'The file [{file_name}] is not allowed to be uploaded!')
|
|
file_id = await SQLBotFileUtils.upload(file)
|
|
file_mapping[f"{flag_name}"] = file_id
|
|
|
|
await save_group_args(session=session, sys_args=sys_args, file_mapping=file_mapping) |