From 68caa12d5bae0e2b8e10c644d64ad6fa8cc4e103 Mon Sep 17 00:00:00 2001 From: Vadim Stepanov Date: Tue, 20 Aug 2024 12:32:20 +0100 Subject: [PATCH] Fix SSR push notifications for deleted orgs (#4868) following up on https://github.com/grafana/oncall/pull/4813, stop sending SSR reminders for on-call schedules from deleted orgs --- .../tests/tasks/test_new_shift_swap_request.py | 18 ++++++++++++++++++ .../schedules/models/shift_swap_request.py | 4 +++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/engine/apps/mobile_app/tests/tasks/test_new_shift_swap_request.py b/engine/apps/mobile_app/tests/tasks/test_new_shift_swap_request.py index 888a653f..3ef75992 100644 --- a/engine/apps/mobile_app/tests/tasks/test_new_shift_swap_request.py +++ b/engine/apps/mobile_app/tests/tasks/test_new_shift_swap_request.py @@ -91,6 +91,24 @@ def test_get_shift_swap_requests_to_notify(make_organization, make_user, make_sc assert _get_shift_swap_requests_to_notify(swap_start) == [] +@pytest.mark.django_db +def test_get_shift_swap_requests_to_notify_deleted_organization( + make_organization, make_user, make_schedule, make_shift_swap_request +): + organization = make_organization() + user = make_user(organization=organization) + schedule = make_schedule(organization, schedule_class=OnCallScheduleWeb) + + swap_start = timezone.now() + swap_end = swap_start + timezone.timedelta(days=1) + make_shift_swap_request( + schedule, user, swap_start=swap_start, swap_end=swap_end, created_at=swap_start - timezone.timedelta(days=27) + ) + + organization.delete() + assert _get_shift_swap_requests_to_notify(swap_start - timezone.timedelta(days=28)) == [] + + @pytest.mark.django_db def test_notify_shift_swap_requests(make_organization, make_user, make_schedule, make_shift_swap_request): organization = make_organization() diff --git a/engine/apps/schedules/models/shift_swap_request.py b/engine/apps/schedules/models/shift_swap_request.py index dde99a7f..a8d5429b 100644 --- a/engine/apps/schedules/models/shift_swap_request.py +++ b/engine/apps/schedules/models/shift_swap_request.py @@ -48,7 +48,9 @@ class ShiftSwapRequestManager(models.Manager): return self.get_queryset().hard_delete() def get_open_requests(self, now): - return self.get_queryset().filter(benefactor__isnull=True, swap_start__gt=now) + return self.get_queryset().filter( + schedule__organization__deleted_at__isnull=True, benefactor__isnull=True, swap_start__gt=now + ) class ShiftSwapRequest(models.Model):