Sfoglia il codice sorgente

Add long_window_days config, default 400 days

Replaces hardcoded 365-day horizon in periodic_long workflows with a
configurable global.long_window_days (default 400) to safely overrun
the 1-year boundary and avoid leap year / off-by-one edge cases.
ZiB 4 mesi fa
parent
commit
30ad07c9ce

+ 2 - 0
room_cal/_utils.py

@@ -219,6 +219,7 @@ class GlobalConfig:
   property: PropertyConfig = field(default_factory=PropertyConfig)
   property: PropertyConfig = field(default_factory=PropertyConfig)
   prices: DefaultPrices = field(default_factory=DefaultPrices)
   prices: DefaultPrices = field(default_factory=DefaultPrices)
   reservation_window_days: int = 90
   reservation_window_days: int = 90
+  long_window_days: int = 400
   busy_calendar_name: str = 'Busy'
   busy_calendar_name: str = 'Busy'
 
 
   @classmethod
   @classmethod
@@ -228,6 +229,7 @@ class GlobalConfig:
       property=PropertyConfig.from_dict(d.get('property', {})),
       property=PropertyConfig.from_dict(d.get('property', {})),
       prices=DefaultPrices.from_dict(d.get('prices', {})),
       prices=DefaultPrices.from_dict(d.get('prices', {})),
       reservation_window_days=d.get('reservation_window_days', 90),
       reservation_window_days=d.get('reservation_window_days', 90),
+      long_window_days=d.get('long_window_days', 400),
       busy_calendar_name=d.get('busy_calendar_name', 'Busy'),
       busy_calendar_name=d.get('busy_calendar_name', 'Busy'),
     )
     )
 
 

+ 2 - 1
room_cal/workflows/prices.py

@@ -90,7 +90,8 @@ async def _periodic_fetch_short(api: 'ServiceAPI') -> None:
 
 
 async def _periodic_fetch_long(api: 'ServiceAPI') -> None:
 async def _periodic_fetch_long(api: 'ServiceAPI') -> None:
   start = local_today()
   start = local_today()
-  await fetch_prices(start, start + timedelta(days=365), api=api, booked_only=True)
+  window = get_config().global_.long_window_days
+  await fetch_prices(start, start + timedelta(days=window), api=api, booked_only=True)
 
 
 
 
 register_periodic(_periodic_fetch_short, timedelta(hours=6))
 register_periodic(_periodic_fetch_short, timedelta(hours=6))

+ 2 - 1
room_cal/workflows/reservations.py

@@ -50,7 +50,8 @@ async def _periodic_sync_short(api: 'ServiceAPI') -> None:
 
 
 async def _periodic_sync_long(api: 'ServiceAPI') -> None:
 async def _periodic_sync_long(api: 'ServiceAPI') -> None:
   start = local_today()
   start = local_today()
-  await sync_reservations(start, start + timedelta(days=365), api=api)
+  window = get_config().global_.long_window_days
+  await sync_reservations(start, start + timedelta(days=window), api=api)
 
 
 
 
 register_periodic(_periodic_sync_short, timedelta(minutes=5))
 register_periodic(_periodic_sync_short, timedelta(minutes=5))