| """文件夹管理 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) |
|
|
|
|