25 lines
943 B
Python
25 lines
943 B
Python
from fastapi import HTTPException
|
|
from fastapi_demo.app.domain.status import AssetStatus
|
|
|
|
# Erlaubte Übergänge (Transition Matrix)
|
|
ALLOWED_TRANSITIONS: dict[AssetStatus, set[AssetStatus]] = {
|
|
AssetStatus.WARENEINGANG: {AssetStatus.SICHTPRUEFUNG},
|
|
AssetStatus.SICHTPRUEFUNG: {AssetStatus.WARTESCHLANGE},
|
|
AssetStatus.WARTESCHLANGE: {AssetStatus.IN_BEARBEITUNG},
|
|
AssetStatus.IN_BEARBEITUNG: {AssetStatus.QUALITAETSKONTROLLE},
|
|
AssetStatus.QUALITAETSKONTROLLE: {
|
|
AssetStatus.WARENAUSGANG,
|
|
AssetStatus.IN_BEARBEITUNG,
|
|
}, # z.B. Nacharbeit
|
|
AssetStatus.WARENAUSGANG: set(),
|
|
}
|
|
|
|
|
|
def ensure_transition_allowed(from_status: AssetStatus, to_status: AssetStatus) -> None:
|
|
allowed = ALLOWED_TRANSITIONS.get(from_status, set())
|
|
if to_status not in allowed:
|
|
raise HTTPException(
|
|
status_code=409,
|
|
detail=f"Transition nicht erlaubt: {from_status} -> {to_status}",
|
|
)
|