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: """