Server settings → People: a deactivated account keeps getting reminders, webhook posts and syncs #575
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#575
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-09-29 in a read-only review of postulo at
95348908d, checking which scheduler queues skip deactivated accounts, and confirmed with a probe on the snapshot.Checked again on 2026-10-01 against
mainat0a5cad587: still present. The code is now atcore/server_views.py:234-256(PersonActiveView); the other locations have not moved.Server settings → People deactivates an account ("nothing deleted, no sign-in"), and two of the scheduler's announcers skip such accounts with
owner__is_active=True. The others do not: due reminders are still announced to every notifier the account configured, queued webhook rows are still posted, sync connections still dial their servers with the stored credentials, and document copies still go to external stores.notifications/management/commands/send_due_reminders.py:47-51,announce_due_reminders: filters onlyoutstanding(),due_at__lteandnotified_at__isnull.notifications/webhooks.py:77-90,pending: no owner filter.plugins/syncing.py:98-106,due_connections:Connection.objects.filter(kind="sync", enabled=True).documents/archiving.py:173-189,pending_copies: no owner filter.notifications/service.py:60:Connection.objects.for_user(user)checks onlyis_authenticated, which is always true for a saved user, sonotifyitself does not stop it.applications/quiet.py:71andjobs/closing.py:80. Deactivation iscore/server_views.py:233-255,PersonActiveView.pending(). Calendar and mail syncs keep running on the account's behalf.owner__is_active=Trueinannounce_due_reminders,webhooks.pending,due_connectionsandpending_copies, leaving the rows in place so reactivation resumes them. As a backstop, havenotifyreturn 0 for an inactive user, which covers every announcer and errand at once.Done when
tests/test_scheduler.pydeactivates the owner of a due reminder and expectsannounce_due_reminders()to return(0, 0)and leavenotified_atempty.tests/test_webhooks.py,tests/test_syncs.pyandtests/test_stores.pyexpect an inactive owner's rows and connections to be left out ofpending(),due_connections()andpending_copies().