From a9364307c8c0fbb255d3bdead1365a3517e0473c Mon Sep 17 00:00:00 2001 From: Ildar Iskhakov Date: Thu, 2 Nov 2023 16:45:30 +0800 Subject: [PATCH] Return alert groups for deleted integrations on private api (#3223) # What this PR does This PR adds alert groups from deleted integrations to the api response. More details in this [slack thread](https://raintank-corp.slack.com/archives/C0229FD3CE9/p1698742008962209) ## Which issue(s) this PR fixes ## Checklist - [ ] Unit, integration, and e2e (if applicable) tests updated - [ ] Documentation added (or `pr:no public docs` PR label added if not required) - [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not required) --------- Co-authored-by: Matvey Kukuy --- engine/apps/api/tests/test_alert_group.py | 21 +++++++++++++++++++++ engine/apps/api/views/alert_group.py | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/engine/apps/api/tests/test_alert_group.py b/engine/apps/api/tests/test_alert_group.py index b293256c..a22ebdb3 100644 --- a/engine/apps/api/tests/test_alert_group.py +++ b/engine/apps/api/tests/test_alert_group.py @@ -76,6 +76,27 @@ def test_get_filter_by_integration( assert len(response.data["results"]) == 4 +@pytest.mark.django_db +def test_get_alert_groups_from_deleted_integration(alert_group_internal_api_setup, make_user_auth_headers): + user, token, alert_groups = alert_group_internal_api_setup + + alert_receive_channel = alert_groups[0].channel + alert_receive_channel.delete() + + client = APIClient() + + url = reverse("api-internal:alertgroup-list") + response = client.get( + url, + format="json", + **make_user_auth_headers(user, token), + ) + + assert response.status_code == status.HTTP_200_OK + # Alert groups from deleted integrations should be returned + assert len(response.data["results"]) == 4 + + @pytest.mark.django_db def test_get_filter_started_at(alert_group_internal_api_setup, make_user_auth_headers): user, token, _ = alert_group_internal_api_setup diff --git a/engine/apps/api/views/alert_group.py b/engine/apps/api/views/alert_group.py index f1db153a..f022010e 100644 --- a/engine/apps/api/views/alert_group.py +++ b/engine/apps/api/views/alert_group.py @@ -324,7 +324,7 @@ class AlertGroupView( def get_queryset(self, ignore_filtering_by_available_teams=False): # no select_related or prefetch_related is used at this point, it will be done on paginate_queryset. - alert_receive_channels_qs = AlertReceiveChannel.objects.filter( + alert_receive_channels_qs = AlertReceiveChannel.objects_with_deleted.filter( organization_id=self.request.auth.organization.id ) if not ignore_filtering_by_available_teams: