from typing import List
from pydantic import AwareDatetime, Field
from ska_oso_pdm._shared import Metadata, PanelID, PdmObject, ProposalID
from ska_oso_pdm._shared.atoms import TerseStrEnum
from ska_oso_pdm._shared.ids import ReviewerID
[docs]
class ReviewerStatus(TerseStrEnum):
ACCEPTED = "accepted"
DECLINED = "declined"
PENDING = "pending"
[docs]
class ProposalAssignment(PdmObject):
prsl_id: ProposalID
assigned_on: AwareDatetime
[docs]
class ReviewerAssignment(PdmObject):
reviewer_id: ReviewerID
assigned_on: AwareDatetime
status: ReviewerStatus = ReviewerStatus.PENDING
[docs]
class Panel(PdmObject):
metadata: Metadata = Field(
default_factory=Metadata, description="The metadata of this Panel."
)
panel_id: PanelID
name: str
cycle: str | None = None
proposals: List[ProposalAssignment] = Field(default_factory=list)
reviewers: List[ReviewerAssignment] = Field(default_factory=list)