implemented to change folder access level chacl command.

This commit is contained in:
2023-05-11 17:00:14 +09:00
parent 995e4cc467
commit b028c86b20
8 changed files with 80 additions and 12 deletions

View File

@ -1,6 +1,6 @@
from mdrsclient.models.error import DRFStandardizedErrors
from mdrsclient.models.file import File
from mdrsclient.models.folder import Folder, FolderSimple
from mdrsclient.models.folder import Folder, FolderAccessLevel, FolderSimple
from mdrsclient.models.laboratory import Laboratories, Laboratory
from mdrsclient.models.user import Token, User
@ -8,6 +8,7 @@ __all__ = [
"DRFStandardizedErrors",
"File",
"Folder",
"FolderAccessLevel",
"FolderSimple",
"Laboratories",
"Laboratory",

View File

@ -1,17 +1,35 @@
from typing import Final
from typing import Final, NamedTuple
from pydantic.dataclasses import dataclass
from mdrsclient.models.file 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",
}
class FolderAccessLevelItem(NamedTuple):
id: int
key: str
label: str
class FolderAccessLevel:
ACCESS_LEVELS: Final[list[FolderAccessLevelItem]] = [
FolderAccessLevelItem(-1, "storage", "Storage"),
FolderAccessLevelItem(0, "private", "Private"),
FolderAccessLevelItem(1, "cbs_open", "CBS Open"),
FolderAccessLevelItem(2, "pw_open", "PW Open"),
FolderAccessLevelItem(3, "public", "Public"),
]
@staticmethod
def key2id(key: str) -> int | None:
acl = next((x for x in FolderAccessLevel.ACCESS_LEVELS if x.key == key), None)
return acl.id if acl is not None else None
@staticmethod
def id2label(id: int) -> str | None:
acl = next((x for x in FolderAccessLevel.ACCESS_LEVELS if x.id == id), None)
return acl.label if acl is not None else None
@dataclass(frozen=True)
@ -29,7 +47,8 @@ class FolderSimple:
@property
def access_level_name(self) -> str:
return ACCESS_LEVEL_NAMES[self.access_level]
label = FolderAccessLevel.id2label(self.access_level)
return label if label is not None else ""
@property
def lock_name(self) -> str: