fix storage

This commit is contained in:
jxxghp
2025-05-02 20:49:38 +08:00
parent c0976897ef
commit 7f2ed09267
2 changed files with 32 additions and 3 deletions
+3 -1
View File
@@ -51,7 +51,7 @@ class StorageHelper:
break break
self.systemconfig.set(SystemConfigKey.Storages, [s.dict() for s in storagies]) self.systemconfig.set(SystemConfigKey.Storages, [s.dict() for s in storagies])
def add_storage(self, storage: str, conf: dict): def add_storage(self, storage: str, name: str, conf: dict):
""" """
添加存储配置 添加存储配置
""" """
@@ -60,12 +60,14 @@ class StorageHelper:
storagies = [ storagies = [
schemas.StorageConf( schemas.StorageConf(
type=storage, type=storage,
name=name,
config=conf config=conf
) )
] ]
else: else:
storagies.append(schemas.StorageConf( storagies.append(schemas.StorageConf(
type=storage, type=storage,
name=name,
config=conf config=conf
)) ))
self.systemconfig.set(SystemConfigKey.Storages, [s.dict() for s in storagies]) self.systemconfig.set(SystemConfigKey.Storages, [s.dict() for s in storagies])
+29 -2
View File
@@ -30,6 +30,7 @@ class FileManagerModule(_ModuleBase):
""" """
_storage_schemas = [] _storage_schemas = []
_support_storages = []
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@@ -40,6 +41,8 @@ class FileManagerModule(_ModuleBase):
# 加载模块 # 加载模块
self._storage_schemas = ModuleHelper.load('app.modules.filemanager.storages', self._storage_schemas = ModuleHelper.load('app.modules.filemanager.storages',
filter_func=lambda _, obj: hasattr(obj, 'schema') and obj.schema) filter_func=lambda _, obj: hasattr(obj, 'schema') and obj.schema)
# 获取存储类型
self._support_storages = [storage.schema.value for storage in self._storage_schemas]
@staticmethod @staticmethod
def get_name() -> str: def get_name() -> str:
@@ -114,6 +117,8 @@ class FileManagerModule(_ModuleBase):
""" """
支持的整理方式 支持的整理方式
""" """
if storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(storage) storage_oper = self.__get_storage_oper(storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {storage} 的整理方式获取") logger.error(f"不支持 {storage} 的整理方式获取")
@@ -176,6 +181,8 @@ class FileManagerModule(_ModuleBase):
:param recursion: 是否递归,此时只浏览文件 :param recursion: 是否递归,此时只浏览文件
:return: 文件项列表 :return: 文件项列表
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的文件浏览") logger.error(f"不支持 {fileitem.storage} 的文件浏览")
@@ -206,6 +213,8 @@ class FileManagerModule(_ModuleBase):
""" """
查询当前目录下是否存在指定扩展名任意文件 查询当前目录下是否存在指定扩展名任意文件
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的文件浏览") logger.error(f"不支持 {fileitem.storage} 的文件浏览")
@@ -239,26 +248,32 @@ class FileManagerModule(_ModuleBase):
:param name: 目录名 :param name: 目录名
:return: 创建的目录 :return: 创建的目录
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的目录创建") logger.error(f"不支持 {fileitem.storage} 的目录创建")
return None return None
return storage_oper.create_folder(fileitem, name) return storage_oper.create_folder(fileitem, name)
def delete_file(self, fileitem: FileItem) -> bool: def delete_file(self, fileitem: FileItem) -> Optional[bool]:
""" """
删除文件或目录 删除文件或目录
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的删除处理") logger.error(f"不支持 {fileitem.storage} 的删除处理")
return False return False
return storage_oper.delete(fileitem) return storage_oper.delete(fileitem)
def rename_file(self, fileitem: FileItem, name: str) -> bool: def rename_file(self, fileitem: FileItem, name: str) -> Optional[bool]:
""" """
重命名文件或目录 重命名文件或目录
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的重命名处理") logger.error(f"不支持 {fileitem.storage} 的重命名处理")
@@ -269,6 +284,8 @@ class FileManagerModule(_ModuleBase):
""" """
下载文件 下载文件
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的下载处理") logger.error(f"不支持 {fileitem.storage} 的下载处理")
@@ -279,6 +296,8 @@ class FileManagerModule(_ModuleBase):
""" """
上传文件 上传文件
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的上传处理") logger.error(f"不支持 {fileitem.storage} 的上传处理")
@@ -289,6 +308,8 @@ class FileManagerModule(_ModuleBase):
""" """
根据路径获取文件项 根据路径获取文件项
""" """
if storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(storage) storage_oper = self.__get_storage_oper(storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {storage} 的文件获取") logger.error(f"不支持 {storage} 的文件获取")
@@ -299,6 +320,8 @@ class FileManagerModule(_ModuleBase):
""" """
获取上级目录项 获取上级目录项
""" """
if fileitem.storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(fileitem.storage) storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {fileitem.storage} 的文件获取") logger.error(f"不支持 {fileitem.storage} 的文件获取")
@@ -309,6 +332,8 @@ class FileManagerModule(_ModuleBase):
""" """
快照存储 快照存储
""" """
if storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(storage) storage_oper = self.__get_storage_oper(storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {storage} 的快照处理") logger.error(f"不支持 {storage} 的快照处理")
@@ -319,6 +344,8 @@ class FileManagerModule(_ModuleBase):
""" """
存储使用情况 存储使用情况
""" """
if storage not in self._support_storages:
return None
storage_oper = self.__get_storage_oper(storage) storage_oper = self.__get_storage_oper(storage)
if not storage_oper: if not storage_oper:
logger.error(f"不支持 {storage} 的存储使用情况") logger.error(f"不支持 {storage} 的存储使用情况")