50 lines
923 B
Python
50 lines
923 B
Python
from __future__ import annotations
|
|
|
|
from typing import AbstractSet
|
|
|
|
|
|
def can_view_owner_roles(
|
|
roles: AbstractSet[str],
|
|
review_owner: str,
|
|
) -> bool:
|
|
if "ADMIN" in roles:
|
|
return True
|
|
if review_owner == "PRODUCTION":
|
|
return "PRODUCTION" in roles
|
|
if review_owner == "TECHNICAL":
|
|
return "TECHNICAL" in roles
|
|
if review_owner == "JOINT":
|
|
return bool(
|
|
roles
|
|
& {
|
|
"PRODUCTION",
|
|
"TECHNICAL",
|
|
"JOINT",
|
|
}
|
|
)
|
|
return False
|
|
|
|
|
|
def can_approve_context_roles(
|
|
roles: AbstractSet[str],
|
|
) -> bool:
|
|
return bool(
|
|
roles
|
|
& {
|
|
"TECHNICAL",
|
|
"ADMIN",
|
|
}
|
|
)
|
|
|
|
|
|
def can_manage_clarification_roles(
|
|
roles: AbstractSet[str],
|
|
) -> bool:
|
|
return bool(
|
|
roles
|
|
& {
|
|
"PRODUCTION",
|
|
"ADMIN",
|
|
}
|
|
)
|