File size: 2,716 Bytes
e5d8d3a 033070f e5d8d3a 033070f e5d8d3a c8f3989 e5d8d3a c8f3989 e5d8d3a 033070f e5d8d3a c8f3989 e5d8d3a c8f3989 e5d8d3a c8f3989 e5d8d3a 033070f e5d8d3a c8f3989 e5d8d3a c8f3989 e5d8d3a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | """文件夹管理 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)
|