implemented to change folder access level chacl
command.
This commit is contained in:
@ -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",
|
||||
|
@ -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:
|
||||
|
Reference in New Issue
Block a user