fix: preserve deadline calendar days (Closes #719)
This commit is contained in:
1 parent
9ec88179c3
commit
dce9ae04c9
7 files changed
+135
-26
No files matched your search
@@ -306,20 +306,17 @@ async def _dispatch_deadline_reminders_unlocked(
|
||||
snapshot = await assigned()
|
||||
if snapshot.get("complete") is False:
|
||||
return 0
|
||||
due_cutoff = current + timedelta(hours=48)
|
||||
due_count = 0
|
||||
due_days = []
|
||||
for item in snapshot.get("items", []):
|
||||
if not isinstance(item, dict) or not item.get("due_date"):
|
||||
continue
|
||||
raw_due = str(item["due_date"])
|
||||
try:
|
||||
due = datetime.fromisoformat(str(item["due_date"]).replace("Z", "+00:00"))
|
||||
due_day = datetime.strptime(raw_due[:10], "%Y-%m-%d").date()
|
||||
except ValueError:
|
||||
continue
|
||||
if due.tzinfo is None:
|
||||
due = due.replace(tzinfo=timezone.utc)
|
||||
if due <= due_cutoff:
|
||||
due_count += 1
|
||||
if not due_count:
|
||||
due_days.append(due_day)
|
||||
if not due_days:
|
||||
return 0
|
||||
semaphore = asyncio.Semaphore(max(1, max_concurrency))
|
||||
|
||||
@@ -335,6 +332,10 @@ async def _dispatch_deadline_reminders_unlocked(
|
||||
or device.delivered_local_day == local_day
|
||||
):
|
||||
return 0
|
||||
local_cutoff = local_now.date() + timedelta(days=2)
|
||||
due_count = sum(due_day <= local_cutoff for due_day in due_days)
|
||||
if not due_count:
|
||||
return 0
|
||||
if session_active is not None and not await session_active(device.session_id):
|
||||
await asyncio.to_thread(store.delete_session, device.session_id)
|
||||
return 0
|
||||
|
||||
Reference in new issue
Block a user