"""
a simple Python representation of the SBD, SBI, Project and EB status history
"""
from pydantic import Field
from ska_oso_pdm._shared import (
ExecutionBlockID,
ProjectID,
SBDefinitionID,
SBInstanceID,
)
from ska_oso_pdm._shared.atoms import TerseStrEnum
from ska_oso_pdm._shared.metadata import Metadata
from ska_oso_pdm._shared.pdm_object import PdmObject
[docs]
class SBDStatus(TerseStrEnum):
DRAFT = "Draft"
SUBMITTED = "Submitted"
READY = "Ready"
IN_PROGRESS = "In Progress"
OBSERVED = "Observed"
SUSPENDED = "Suspended"
FAILED_PROCESSING = "Failed Processing"
COMPLETE = "Complete"
[docs]
class SBIStatus(TerseStrEnum):
CREATED = "Created"
EXECUTING = "Executing"
OBSERVED = "Observed"
FAILED = "Failed"
[docs]
class OSOEBStatus(TerseStrEnum):
CREATED = "Created"
FULLY_OBSERVED = "Fully Observed"
FAILED = "Failed"
[docs]
class ProjectStatus(TerseStrEnum):
DRAFT = "Draft"
SUBMITTED = "Submitted"
READY = "Ready"
IN_PROGRESS = "In Progress"
OBSERVED = "Observed"
COMPLETE = "Complete"
CANCELLED = "Cancelled"
OUT_OF_TIME = "Out of Time"
[docs]
class EntityStatus(PdmObject):
metadata: Metadata = Field(default_factory=Metadata)
[docs]
class SBDStatusHistory(EntityStatus):
sbd_ref: SBDefinitionID
sbd_version: int = 1
current_status: SBDStatus = SBDStatus.DRAFT
previous_status: SBDStatus | None = SBDStatus.DRAFT
[docs]
class SBIStatusHistory(EntityStatus):
sbi_ref: SBInstanceID
sbi_version: int = 1
current_status: SBIStatus = SBIStatus.CREATED
previous_status: SBIStatus | None = SBIStatus.CREATED
[docs]
class OSOEBStatusHistory(EntityStatus):
eb_ref: ExecutionBlockID
eb_version: int = 1
current_status: OSOEBStatus = OSOEBStatus.CREATED
previous_status: OSOEBStatus | None = OSOEBStatus.CREATED
[docs]
class ProjectStatusHistory(EntityStatus):
prj_ref: ProjectID
prj_version: int = 1
current_status: ProjectStatus = ProjectStatus.DRAFT
previous_status: ProjectStatus | None = ProjectStatus.DRAFT