mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-08-28 03:29:35 +08:00
Initial commit
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
from .common import VirtualFSCommonMixin
|
||||
from .resolver import VirtualFSResolverMixin
|
||||
from .listing import VirtualFSListingMixin
|
||||
from .file_ops import VirtualFSFileOpsMixin
|
||||
from .transfer import VirtualFSTransferMixin
|
||||
from .processing import VirtualFSProcessingMixin
|
||||
from .temp_link import VirtualFSTempLinkMixin
|
||||
from .routes import VirtualFSRouteMixin
|
||||
|
||||
|
||||
class VirtualFSService(
|
||||
VirtualFSRouteMixin,
|
||||
VirtualFSTempLinkMixin,
|
||||
VirtualFSProcessingMixin,
|
||||
VirtualFSTransferMixin,
|
||||
VirtualFSFileOpsMixin,
|
||||
VirtualFSListingMixin,
|
||||
VirtualFSResolverMixin,
|
||||
VirtualFSCommonMixin,
|
||||
):
|
||||
@classmethod
|
||||
async def list_directory(
|
||||
cls,
|
||||
path: str,
|
||||
page_num: int = 1,
|
||||
page_size: int = 50,
|
||||
sort_by: str = "name",
|
||||
sort_order: str = "asc",
|
||||
):
|
||||
"""列出目录内容"""
|
||||
return await cls.list_virtual_dir(path, page_num, page_size, sort_by, sort_order)
|
||||
|
||||
@classmethod
|
||||
async def list_directory_with_permission(
|
||||
cls,
|
||||
path: str,
|
||||
user_id: int,
|
||||
page_num: int = 1,
|
||||
page_size: int = 50,
|
||||
sort_by: str = "name",
|
||||
sort_order: str = "asc",
|
||||
):
|
||||
"""列出目录内容(带权限过滤)"""
|
||||
full_path = cls._normalize_path(path).rstrip("/") or "/"
|
||||
result = await cls.list_virtual_dir_with_permission(
|
||||
full_path, user_id, page_num, page_size, sort_by, sort_order
|
||||
)
|
||||
return {
|
||||
"path": full_path,
|
||||
"entries": result.get("items", []) if isinstance(result, dict) else [],
|
||||
"pagination": {
|
||||
"total": result.get("total", 0) if isinstance(result, dict) else 0,
|
||||
"page": result.get("page", page_num) if isinstance(result, dict) else page_num,
|
||||
"page_size": result.get("page_size", page_size) if isinstance(result, dict) else page_size,
|
||||
"pages": result.get("pages", 0) if isinstance(result, dict) else 0,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user