39 lines
1,006 B
Python
39 lines
1,006 B
Python
from __future__ import annotations
|
|
|
|
UI_STATUSES = ("new", "rewrite", "publish", "published", "close")
|
|
|
|
|
|
def internal_to_ui_status(status: str | None) -> str:
|
|
value = (status or "").strip()
|
|
if value == "approved":
|
|
return "publish"
|
|
if value == "error":
|
|
return "close"
|
|
if value == "review":
|
|
return "rewrite"
|
|
if value in {"new", "rewrite", "published"}:
|
|
return value
|
|
return value or "new"
|
|
|
|
|
|
def ui_to_internal_status(status: str | None) -> str:
|
|
value = (status or "").strip()
|
|
if value == "publish":
|
|
return "approved"
|
|
if value == "close":
|
|
return "error"
|
|
if value in {"new", "rewrite", "published"}:
|
|
return value
|
|
if value in {"approved", "error", "review"}:
|
|
return value
|
|
return value
|
|
|
|
|
|
ALLOWED_UI_TRANSITIONS: dict[str, set[str]] = {
|
|
"new": {"rewrite", "close"},
|
|
"rewrite": {"publish", "close"},
|
|
"publish": {"published", "close"},
|
|
"published": {"close"},
|
|
"close": {"rewrite"},
|
|
}
|
|
|