first commit
This commit is contained in:
58
mdrsclient/models/folder.py
Normal file
58
mdrsclient/models/folder.py
Normal file
@ -0,0 +1,58 @@
|
||||
from typing import Final
|
||||
|
||||
from pydantic.dataclasses import dataclass
|
||||
|
||||
from mdrsclient.models import File
|
||||
from mdrsclient.models.utils import iso8601_to_user_friendly
|
||||
|
||||
ACCESS_LEVEL_NAMES: Final[dict[int, str]] = {
|
||||
-1: "Storage",
|
||||
0: "Private",
|
||||
1: "CBS Open",
|
||||
2: "PW Open",
|
||||
3: "Public",
|
||||
}
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FolderSimple:
|
||||
id: str
|
||||
pid: str | None
|
||||
name: str
|
||||
access_level: int
|
||||
lock: bool
|
||||
lab_id: int
|
||||
description: str
|
||||
created_at: str
|
||||
updated_at: str
|
||||
restrict_opened_at: str | None
|
||||
|
||||
@property
|
||||
def access_level_name(self) -> str:
|
||||
return ACCESS_LEVEL_NAMES[self.access_level]
|
||||
|
||||
@property
|
||||
def lock_name(self) -> str:
|
||||
return "locked" if self.lock else "unlocked"
|
||||
|
||||
@property
|
||||
def created_at_name(self) -> str:
|
||||
return iso8601_to_user_friendly(self.created_at)
|
||||
|
||||
@property
|
||||
def updated_at_name(self) -> str:
|
||||
return iso8601_to_user_friendly(self.updated_at)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Folder(FolderSimple):
|
||||
metadata: list[dict]
|
||||
sub_folders: list[FolderSimple]
|
||||
files: list[File]
|
||||
path: str
|
||||
|
||||
def find_sub_folder(self, name: str) -> FolderSimple | None:
|
||||
return next((x for x in self.sub_folders if x.name == name), None)
|
||||
|
||||
def find_file(self, name: str) -> File | None:
|
||||
return next((x for x in self.files if x.name == name), None)
|
Reference in New Issue
Block a user