Преглед изворни кода

Add periodic local-sync tasks (6h short, 24h long)

Runs local_sync on the same cadence as other periodic workflows so
rule-based discounts, closed events, and price floors are applied
automatically without manual intervention.
ZiB пре 4 месеци
родитељ
комит
4bec02f62e
2 измењених фајлова са 26 додато и 0 уклоњено
  1. 1 0
      room_cal/_periodic.py
  2. 25 0
      room_cal/workflows/local.py

+ 1 - 0
room_cal/_periodic.py

@@ -36,6 +36,7 @@ def _register_all_periodics() -> None:
   import room_cal.workflows.reservations  # noqa: F401
   import room_cal.workflows.prices        # noqa: F401
   import room_cal.workflows.closed        # noqa: F401
+  import room_cal.workflows.local         # noqa: F401
 
 
 async def run_due(api: ServiceAPI) -> None:

+ 25 - 0
room_cal/workflows/local.py

@@ -0,0 +1,25 @@
+from datetime import timedelta
+from typing import TYPE_CHECKING
+
+from room_cal.actions.local_sync import local_sync
+from room_cal._periodic import register_periodic
+from room_cal._utils import local_today, get_config
+
+if TYPE_CHECKING:
+  from room_cal.service_api import ServiceAPI
+
+
+async def _periodic_local_short(api: 'ServiceAPI') -> None:
+  start = local_today()
+  window = get_config().global_.reservation_window_days
+  await local_sync(start, start + timedelta(days=window))
+
+
+async def _periodic_local_long(api: 'ServiceAPI') -> None:
+  start = local_today()
+  window = get_config().global_.long_window_days
+  await local_sync(start, start + timedelta(days=window))
+
+
+register_periodic(_periodic_local_short, timedelta(hours=6))
+register_periodic(_periodic_local_long, timedelta(days=1))