InfoRadar / backend /api /folder.py
dqy08's picture
添加模型管理功能;优化初始化时模型加载时序;国际化仅限普通用户界面;重构server.py以优化环境变量管理和上下文管理
c8f3989
"""文件夹管理 API"""
from backend.demo_folder import (
get_all_folders,
move_folder,
rename_folder,
delete_folder,
create_folder,
)
from backend.api.utils import (
get_demo_directory,
handle_api_error,
handle_api_success,
require_admin,
)
def _move_folder_internal(demo_dir, path, target_path):
"""内部函数:移动文件夹"""
return move_folder(demo_dir, path, target_path)
@require_admin
def rename_folder_api(rename_request):
"""
重命名文件夹
请求格式: { path: string, new_name: string }
"""
path = rename_request.get('path')
new_name = rename_request.get('new_name')
if not path or not new_name:
return {
'success': False,
'message': 'Missing required parameter: path or new_name'
}
try:
demo_dir = get_demo_directory(create=False)
result = rename_folder(demo_dir, path, new_name)
return handle_api_success(result)
except Exception as e:
return handle_api_error('Rename failed', e)
@require_admin
def delete_folder_api(delete_request):
"""
删除文件夹(移动到.deleted目录)
请求格式: { path: string }
"""
path = delete_request.get('path')
if not path:
return {
'success': False,
'message': 'Missing required parameter: path'
}
try:
demo_dir = get_demo_directory(create=False)
result = delete_folder(demo_dir, path)
return handle_api_success(result)
except Exception as e:
return handle_api_error('Delete failed', e)
def list_all_folders():
"""
获取所有文件夹列表(用于移动操作的选择器)
返回格式: { folders: string[] }
"""
try:
demo_dir = get_demo_directory(create=False)
folders = get_all_folders(demo_dir)
return {'folders': folders}
except Exception as e:
handle_api_error("Failed to get folder list", e)
return {'folders': []}
@require_admin
def create_folder_api(create_request):
"""
创建新文件夹
请求格式: { parent_path: string, folder_name: string }
"""
parent_path = create_request.get('parent_path', '/')
folder_name = create_request.get('folder_name')
if not folder_name:
return {
'success': False,
'message': 'Missing required parameter: folder_name'
}
try:
demo_dir = get_demo_directory(create=False)
result = create_folder(demo_dir, parent_path, folder_name)
return handle_api_success(result)
except Exception as e:
return handle_api_error('Create failed', e)