Initial FastAPI + SQLite + Alembic
This commit is contained in:
24
fastapi_demo/app/domain/transitions.py
Normal file
24
fastapi_demo/app/domain/transitions.py
Normal file
@@ -0,0 +1,24 @@
|
||||
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}",
|
||||
)
|
||||
Reference in New Issue
Block a user