Files
ctms/backend/app/schemas/project_permission.py
T
2026-05-26 11:32:14 +08:00

34 lines
882 B
Python

from __future__ import annotations
from typing import Literal
from pydantic import BaseModel, Field
ProjectPermissionRole = Literal["ADMIN", "PM", "CRA", "PV", "MEDICAL_REVIEW", "IMP"]
ProjectPermissionAction = Literal["read", "write"]
class ProjectPermissionActionState(BaseModel):
read: bool = False
write: bool = False
class ProjectPermissionModule(BaseModel):
key: str
label: str
description: str | None = None
writable: bool = True
class ProjectRolePermissionMatrix(BaseModel):
roles: dict[ProjectPermissionRole, dict[str, ProjectPermissionActionState]]
class ProjectRolePermissionsRead(ProjectRolePermissionMatrix):
modules: list[ProjectPermissionModule]
class ProjectRolePermissionsUpdate(ProjectRolePermissionMatrix):
roles: dict[ProjectPermissionRole, dict[str, ProjectPermissionActionState]] = Field(default_factory=dict)