34 lines
882 B
Python
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)
|