2023-06-08 10:04:07 +00:00
|
|
|
from itertools import chain
|
|
|
|
|
|
|
|
from terminal.models import default_storage
|
|
|
|
from .base import BaseStorageHandler
|
|
|
|
|
|
|
|
|
|
|
|
class ReplayStorageHandler(BaseStorageHandler):
|
|
|
|
NAME = 'REPLAY'
|
|
|
|
|
|
|
|
def get_file_path(self, **kwargs):
|
|
|
|
storage = kwargs['storage']
|
|
|
|
# 获取外部存储路径名
|
|
|
|
session_path = self.obj.find_ok_relative_path_in_storage(storage)
|
|
|
|
if not session_path:
|
2024-03-29 03:14:36 +00:00
|
|
|
return None, None
|
2023-06-08 10:04:07 +00:00
|
|
|
|
|
|
|
# 通过外部存储路径名后缀,构造真实的本地存储路径
|
|
|
|
return session_path, self.obj.get_local_path_by_relative_path(session_path)
|
|
|
|
|
|
|
|
def find_local(self):
|
|
|
|
# 存在外部存储上,所有可能的路径名
|
|
|
|
session_paths = self.obj.get_all_possible_relative_path()
|
|
|
|
|
|
|
|
# 存在本地存储上,所有可能的路径名
|
|
|
|
local_paths = self.obj.get_all_possible_local_path()
|
|
|
|
|
|
|
|
for _local_path in chain(session_paths, local_paths):
|
|
|
|
if default_storage.exists(_local_path):
|
|
|
|
url = default_storage.url(_local_path)
|
|
|
|
return _local_path, url
|
|
|
|
return None, f'{self.NAME} not found.'
|