(self, preset_id: str)
| 335 | return next_preset |
| 336 | |
| 337 | async def delete_file_view_preset(self, preset_id: str) -> dict[str, Any]: |
| 338 | preset_id = str(preset_id).strip() |
| 339 | if not preset_id: |
| 340 | raise HTTPException(status_code=400, detail="请选择要删除的视图预设") |
| 341 | |
| 342 | presets = await self._get_file_view_presets() |
| 343 | deleted_preset = next( |
| 344 | (preset for preset in presets if preset["id"] == preset_id), |
| 345 | None, |
| 346 | ) |
| 347 | next_presets = [preset for preset in presets if preset["id"] != preset_id] |
| 348 | if len(next_presets) == len(presets): |
| 349 | raise HTTPException(status_code=404, detail="视图预设不存在") |
| 350 | |
| 351 | await self._save_file_view_presets(next_presets) |
| 352 | await self.record_admin_activity( |
| 353 | action="file.view_preset_delete", |
| 354 | target_type="view_preset", |
| 355 | target_id=preset_id, |
| 356 | target_name=(deleted_preset or {}).get("name", ""), |
| 357 | count=1, |
| 358 | ) |
| 359 | return { |
| 360 | "deleted": preset_id, |
| 361 | "deletedPresetId": preset_id, |
| 362 | "deleted_preset_id": preset_id, |
| 363 | "total": len(next_presets), |
| 364 | } |
| 365 | |
| 366 | async def apply_files_policy_action( |
| 367 | self, |
no test coverage detected