follow-up recent specification changes about foldeer access level.
This commit is contained in:
parent
79f1b708cb
commit
ac34a26b02
@ -8,28 +8,37 @@ from mdrsclient.models.utils import iso8601_to_user_friendly
|
|||||||
|
|
||||||
|
|
||||||
class FolderAccessLevelItem(NamedTuple):
|
class FolderAccessLevelItem(NamedTuple):
|
||||||
id: int
|
mask: int
|
||||||
key: str
|
key: str
|
||||||
label: str
|
label: str
|
||||||
|
|
||||||
|
|
||||||
class FolderAccessLevel:
|
class FolderAccessLevel:
|
||||||
|
# Bit Mask
|
||||||
|
# - bit 0: Storage or Repository
|
||||||
|
# - bit 1: Is Public
|
||||||
|
# - bit 2: With Password
|
||||||
|
# - bit 3-7: (Reserved)
|
||||||
|
# - bit 8-15: Restricted Open
|
||||||
ACCESS_LEVELS: Final[list[FolderAccessLevelItem]] = [
|
ACCESS_LEVELS: Final[list[FolderAccessLevelItem]] = [
|
||||||
FolderAccessLevelItem(-1, "storage", "Storage"),
|
FolderAccessLevelItem(0x0204, "5kikan_or_pw_open", "5Kikan or PW Open"),
|
||||||
FolderAccessLevelItem(0, "private", "Private"),
|
FolderAccessLevelItem(0x0104, "cbs_or_pw_open", "CBS or PW Open"),
|
||||||
FolderAccessLevelItem(1, "cbs_open", "CBS Open"),
|
FolderAccessLevelItem(0x0200, "5kikan_open", "5Kikan Open"),
|
||||||
FolderAccessLevelItem(2, "pw_open", "PW Open"),
|
FolderAccessLevelItem(0x0100, "cbs_open", "CBS Open"),
|
||||||
FolderAccessLevelItem(3, "public", "Public"),
|
FolderAccessLevelItem(0x0004, "pw_open", "PW Open"),
|
||||||
|
FolderAccessLevelItem(0x0002, "public", "Public"),
|
||||||
|
FolderAccessLevelItem(0x0001, "private", "Private"),
|
||||||
|
FolderAccessLevelItem(0x0000, "storage", "Storage"),
|
||||||
]
|
]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def key2id(key: str) -> int | None:
|
def key2id(key: str) -> int | None:
|
||||||
acl = next((x for x in FolderAccessLevel.ACCESS_LEVELS if x.key == key), 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
|
return acl.mask if acl is not None else None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def id2label(id: int) -> str | None:
|
def id2label(id: int) -> str | None:
|
||||||
acl = next((x for x in FolderAccessLevel.ACCESS_LEVELS if x.id == id), None)
|
acl = next((x for x in FolderAccessLevel.ACCESS_LEVELS if (x.mask & id) == x.mask), None)
|
||||||
return acl.label if acl is not None else None
|
return acl.label if acl is not None else None
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user