45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
"""Статус проекта (порт themes/merakomis/project/structure/eStatus.php)."""
|
||
|
||
from __future__ import annotations
|
||
|
||
from datetime import date
|
||
from typing import Any
|
||
|
||
# tMerakomisProject_status → подпись в UI Merakomis
|
||
PROJECT_STATUS_NAMES: dict[int, str] = {
|
||
0: "Не определён",
|
||
1: "В работе",
|
||
2: "Завершён",
|
||
3: "Пауза",
|
||
}
|
||
|
||
|
||
def project_status_name(status: Any) -> str:
|
||
if status is None:
|
||
return ""
|
||
try:
|
||
return PROJECT_STATUS_NAMES.get(int(status), "")
|
||
except (TypeError, ValueError):
|
||
return ""
|
||
|
||
|
||
def _json_date(v: Any) -> Any:
|
||
if v is None:
|
||
return None
|
||
if isinstance(v, date):
|
||
return v.isoformat()
|
||
s = str(v).strip()
|
||
if not s or s.startswith("0000"):
|
||
return None
|
||
return s[:10]
|
||
|
||
|
||
def enrich_project_status_fields(item: dict[str, Any]) -> dict[str, Any]:
|
||
"""Добавляет status_name; нормализует archive_date."""
|
||
if "status" in item:
|
||
name = project_status_name(item.get("status"))
|
||
item["status_name"] = name or None
|
||
if "archive_date" in item:
|
||
item["archive_date"] = _json_date(item.get("archive_date"))
|
||
return item
|