update link registration site to executive dashboard

This commit is contained in:
Alberto-Audrix committed 2026-09-15 09:44:45 +07:00
1 parent 1e6f6b3b57
commit d0d1ae7d24
26 files changed
+1044 -55

No files matched your search

+14 -10
View File
@@ -10,6 +10,7 @@ from django.conf import settings
from apps.farms.models import Cycle
logger = logging.getLogger(__name__)
@@ -19,35 +20,38 @@ class PusatCloseError(Exception):
super().__init__(message)
def _configured() -> bool:
return bool(
settings.PUSAT_BASE_URL
and settings.PUSAT_API_KEY
and settings.PUSAT_CITY_SITE_ID
)
def _active_site_id_for_cycle(cycle: Cycle) -> int | None:
site = cycle.kandang.site
if site.pusat_active_site_id is not None:
return int(site.pusat_active_site_id)
return None
def _configured(active_site_id: int | None) -> bool:
return bool(settings.PUSAT_BASE_URL and settings.PUSAT_API_KEY and active_site_id)
def notify_pusat_close_request(cycle: Cycle, *, cancelled: bool = False) -> None:
"""POST ingest/cancel to pusat. Raises PusatCloseError on failure when configured."""
if not _configured():
active_site_id = _active_site_id_for_cycle(cycle)
if not _configured(active_site_id):
logger.info("Pusat close channel not configured; skipping notify for cycle %s", cycle.pk)
return
base = settings.PUSAT_BASE_URL.rstrip("/")
headers = {"X-API-Key": settings.PUSAT_API_KEY, "Content-Type": "application/json"}
city_site_id = int(settings.PUSAT_CITY_SITE_ID)
try:
if cancelled:
url = f"{base}/cycle-close/cancel/"
payload: dict[str, Any] = {
"city_site_id": city_site_id,
"active_site_id": active_site_id,
"source_cycle_id": cycle.pk,
}
else:
url = f"{base}/cycle-close/ingest/"
payload = {
"city_site_id": city_site_id,
"active_site_id": active_site_id,
"source_cycle_id": cycle.pk,
"kandang_name": cycle.kandang.kandang_name,
"site_name": cycle.kandang.site.site_name,