Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
RESPONSE_UNAUTHORIZED,
)
from sentry.apidocs.parameters import DetectorWorkflowParams, GlobalParams
from sentry.deletions.models.scheduleddeletion import RegionScheduledDeletion
from sentry.models.organization import Organization
from sentry.utils.audit import create_audit_entry
from sentry.workflow_engine.endpoints.serializers.detector_workflow_serializer import (
Expand Down Expand Up @@ -101,13 +100,16 @@ def delete(
if not can_edit_detector_workflow_connections(detector_workflow.detector, request):
raise PermissionDenied

RegionScheduledDeletion.schedule(detector_workflow, days=0, actor=request.user)
detector_workflow_id = detector_workflow.id
audit_log_data = detector_workflow.get_audit_log_data()

detector_workflow.delete()
create_audit_entry(
request=request,
organization=organization,
target_object=detector_workflow.id,
target_object=detector_workflow_id,
event=audit_log.get_event_id("DETECTOR_WORKFLOW_REMOVE"),
data=detector_workflow.get_audit_log_data(),
data=audit_log_data,
)

return Response(status=status.HTTP_204_NO_CONTENT)
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
RESPONSE_UNAUTHORIZED,
)
from sentry.apidocs.parameters import GlobalParams
from sentry.deletions.models.scheduleddeletion import RegionScheduledDeletion
from sentry.utils.audit import create_audit_entry
from sentry.workflow_engine.endpoints.serializers.detector_workflow_serializer import (
DetectorWorkflowSerializer,
Expand Down Expand Up @@ -135,13 +134,16 @@ def delete(self, request, organization):
if not queryset:
return Response(status=status.HTTP_404_NOT_FOUND)

detector_workflows = list(queryset)

# check that the user has permission to edit all detectors connections before deleting
for detector_workflow in queryset:
for detector_workflow in detector_workflows:
if not can_edit_detector_workflow_connections(detector_workflow.detector, request):
raise PermissionDenied

for detector_workflow in queryset:
RegionScheduledDeletion.schedule(detector_workflow, days=0, actor=request.user)
queryset.delete()

for detector_workflow in detector_workflows:
create_audit_entry(
request=request,
organization=organization,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from sentry import audit_log
from sentry.api.serializers import serialize
from sentry.deletions.models.scheduleddeletion import RegionScheduledDeletion
from sentry.deletions.tasks.scheduled import run_scheduled_deletions
from sentry.testutils.cases import APITestCase
from sentry.testutils.outbox import outbox_runner
from sentry.testutils.silo import region_silo_test
Expand Down Expand Up @@ -71,16 +70,6 @@ def test_simple(self, mock_audit: mock.MagicMock) -> None:
self.detector_workflow.id,
)

# verify the DetectorWorkflow was scheduled for deletion
assert RegionScheduledDeletion.objects.filter(
model_name="DetectorWorkflow",
object_id=self.detector_workflow.id,
).exists()

# delete the DetectorWorkflow
with self.tasks():
run_scheduled_deletions()

# verify it was deleted
assert not DetectorWorkflow.objects.filter(id=self.detector_workflow.id).exists()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from unittest.mock import MagicMock, call

from sentry import audit_log
from sentry.deletions.tasks.scheduled import run_scheduled_deletions
from sentry.grouping.grouptype import ErrorGroupType
from sentry.testutils.cases import APITestCase
from sentry.testutils.silo import region_silo_test
Expand Down Expand Up @@ -311,8 +310,6 @@ def test_simple(self, mock_audit: MagicMock) -> None:
self.organization.slug,
qs_params={"detector_id": self.detector_1.id, "workflow_id": self.workflow_1.id},
)
with self.tasks():
run_scheduled_deletions()

assert not DetectorWorkflow.objects.filter(
detector_id=self.detector_1.id, workflow_id=self.workflow_1.id
Expand All @@ -335,9 +332,6 @@ def test_batch_delete(self, mock_audit: MagicMock) -> None:
self.organization.slug,
qs_params={"detector_id": self.detector_1.id},
)
with self.tasks():
run_scheduled_deletions()

assert not DetectorWorkflow.objects.filter(detector_id=self.detector_1.id).exists()
assert DetectorWorkflow.objects.filter(detector_id=self.detector_2.id).exists()

Expand Down
Loading