From 435a04da0c09087c11abd145e7f43813fcd04291 Mon Sep 17 00:00:00 2001 From: qiaoyun680 <549653222@qq.com> Date: Thu, 8 May 2025 17:44:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(storge):=E6=B7=BB=E5=8A=A0=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E9=87=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/storage.py | 9 +++++++++ app/chain/storage.py | 6 ++++++ app/helper/storage.py | 11 +++++++++++ app/modules/filemanager/__init__.py | 10 ++++++++++ app/modules/filemanager/storages/__init__.py | 7 +++++++ 5 files changed, 43 insertions(+) diff --git a/app/api/endpoints/storage.py b/app/api/endpoints/storage.py index a7847066..09950a9c 100644 --- a/app/api/endpoints/storage.py +++ b/app/api/endpoints/storage.py @@ -55,6 +55,15 @@ def save(name: str, StorageChain().save_config(name, conf) return schemas.Response(success=True) +@router.get("/reset/{name}", summary="重置存储配置", response_model=schemas.Response) +def save(name: str, + _: User = Depends(get_current_active_superuser)) -> Any: + """ + 重置存储配置 + """ + StorageChain().reset_config(name) + return schemas.Response(success=True) + @router.post("/list", summary="所有目录和文件", response_model=List[schemas.FileItem]) def list_files(fileitem: schemas.FileItem, diff --git a/app/chain/storage.py b/app/chain/storage.py index 24a39bc3..efc72cc5 100644 --- a/app/chain/storage.py +++ b/app/chain/storage.py @@ -24,6 +24,12 @@ class StorageChain(ChainBase): """ self.run_module("save_config", storage=storage, conf=conf) + def reset_config(self, storage: str) -> None: + """ + 重置存储配置 + """ + self.run_module("reset_config", storage=storage) + def generate_qrcode(self, storage: str) -> Optional[Tuple[dict, str]]: """ 生成二维码 diff --git a/app/helper/storage.py b/app/helper/storage.py index 96c64cff..de279bf4 100644 --- a/app/helper/storage.py +++ b/app/helper/storage.py @@ -71,3 +71,14 @@ class StorageHelper: config=conf )) self.systemconfig.set(SystemConfigKey.Storages, [s.dict() for s in storagies]) + + def reset_storage(self, storage: str): + """ + 重置存储配置 + """ + storagies = self.get_storagies() + for s in storagies: + if s.type == storage: + s.config = {} + break + self.systemconfig.set(SystemConfigKey.Storages, [s.dict() for s in storagies]) diff --git a/app/modules/filemanager/__init__.py b/app/modules/filemanager/__init__.py index c90c64a6..a69f9a1b 100644 --- a/app/modules/filemanager/__init__.py +++ b/app/modules/filemanager/__init__.py @@ -154,6 +154,16 @@ class FileManagerModule(_ModuleBase): return storage_oper.set_config(conf) + def reset_config(self, storage: str) -> None: + """ + 重置存储配置 + """ + storage_oper = self.__get_storage_oper(storage) + if not storage_oper: + logger.error(f"不支持 {storage} 的重置存储配置") + return + storage_oper.reset_config() + def generate_qrcode(self, storage: str) -> Optional[Tuple[dict, str]]: """ 生成二维码 diff --git a/app/modules/filemanager/storages/__init__.py b/app/modules/filemanager/storages/__init__.py index 43f11a49..a6302d2e 100644 --- a/app/modules/filemanager/storages/__init__.py +++ b/app/modules/filemanager/storages/__init__.py @@ -61,6 +61,13 @@ class StorageBase(metaclass=ABCMeta): """ return transtype in self.transtype + def reset_config(self): + """ + 重置置配置 + """ + self.storagehelper.reset_storage(self.schema.value) + self.init_storage() + @abstractmethod def check(self) -> bool: """