Skip to content

Commit a516659

Browse files
ref(py): Import models directly in project deletions (#69033)
1 parent b0e3e4b commit a516659

File tree

1 file changed

+61
-32
lines changed

1 file changed

+61
-32
lines changed

src/sentry/deletions/defaults/project.py

Lines changed: 61 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,60 +5,89 @@
55

66
class ProjectDeletionTask(ModelDeletionTask):
77
def get_child_relations(self, instance):
8-
from sentry import models
98
from sentry.discover.models import DiscoverSavedQueryProject
109
from sentry.incidents.models.alert_rule import AlertRule
1110
from sentry.incidents.models.incident import IncidentProject
11+
from sentry.models.activity import Activity
12+
from sentry.models.appconnectbuilds import AppConnectBuild
13+
from sentry.models.artifactbundle import ProjectArtifactBundle
14+
from sentry.models.debugfile import ProguardArtifactRelease, ProjectDebugFile
15+
from sentry.models.environment import EnvironmentProject
16+
from sentry.models.eventattachment import EventAttachment
17+
from sentry.models.group import Group
18+
from sentry.models.groupassignee import GroupAssignee
19+
from sentry.models.groupbookmark import GroupBookmark
20+
from sentry.models.groupemailthread import GroupEmailThread
21+
from sentry.models.grouphash import GroupHash
22+
from sentry.models.grouprelease import GroupRelease
23+
from sentry.models.grouprulestatus import GroupRuleStatus
24+
from sentry.models.groupseen import GroupSeen
25+
from sentry.models.groupshare import GroupShare
26+
from sentry.models.groupsubscription import GroupSubscription
27+
from sentry.models.integrations.repository_project_path_config import (
28+
RepositoryProjectPathConfig,
29+
)
30+
from sentry.models.latestappconnectbuildscheck import LatestAppConnectBuildsCheck
31+
from sentry.models.projectbookmark import ProjectBookmark
32+
from sentry.models.projectcodeowners import ProjectCodeOwners
33+
from sentry.models.projectkey import ProjectKey
1234
from sentry.models.projectteam import ProjectTeam
35+
from sentry.models.promptsactivity import PromptsActivity
36+
from sentry.models.release_threshold import ReleaseThreshold
37+
from sentry.models.releaseprojectenvironment import ReleaseProjectEnvironment
38+
from sentry.models.releases.release_project import ReleaseProject
39+
from sentry.models.servicehook import ServiceHook, ServiceHookProject
40+
from sentry.models.transaction_threshold import ProjectTransactionThreshold
41+
from sentry.models.userreport import UserReport
1342
from sentry.monitors.models import Monitor
1443
from sentry.replays.models import ReplayRecordingSegment
1544
from sentry.snuba.models import QuerySubscription
1645

1746
relations = [
1847
# ProjectKey gets revoked immediately, in bulk
19-
ModelRelation(models.ProjectKey, {"project_id": instance.id})
48+
ModelRelation(ProjectKey, {"project_id": instance.id})
2049
]
2150

2251
# in bulk
2352
for m in (
24-
models.Activity,
25-
models.AppConnectBuild,
26-
models.EnvironmentProject,
27-
models.GroupAssignee,
28-
models.GroupBookmark,
29-
models.GroupEmailThread,
30-
models.GroupHash,
31-
models.GroupRelease,
32-
models.GroupRuleStatus,
33-
models.GroupSeen,
34-
models.GroupShare,
35-
models.GroupSubscription,
36-
models.LatestAppConnectBuildsCheck,
37-
models.ProjectBookmark,
38-
models.ProjectKey,
39-
models.ReleaseThreshold,
53+
Activity,
54+
AppConnectBuild,
55+
EnvironmentProject,
56+
GroupAssignee,
57+
GroupBookmark,
58+
GroupEmailThread,
59+
GroupHash,
60+
GroupRelease,
61+
GroupRuleStatus,
62+
GroupSeen,
63+
GroupShare,
64+
GroupSubscription,
65+
LatestAppConnectBuildsCheck,
66+
ProjectBookmark,
67+
ProjectKey,
68+
ReleaseThreshold,
4069
ProjectTeam,
41-
models.PromptsActivity,
70+
PromptsActivity,
4271
# order matters, ProjectCodeOwners to be deleted before RepositoryProjectPathConfig
43-
models.ProjectCodeOwners,
72+
ProjectCodeOwners,
4473
ReplayRecordingSegment,
45-
models.RepositoryProjectPathConfig,
46-
models.ServiceHookProject,
47-
models.ServiceHook,
48-
models.UserReport,
49-
models.ProjectTransactionThreshold,
74+
RepositoryProjectPathConfig,
75+
ServiceHookProject,
76+
ServiceHook,
77+
UserReport,
78+
ProjectTransactionThreshold,
5079
# NOTE: Removing the project relation from `ProjectArtifactBundle` may
5180
# leave behind orphaned `ArtifactBundle`s. Though thats not a big problem
5281
# as those are being automatically cleaned up on their own.
53-
models.ProjectArtifactBundle,
54-
models.ProguardArtifactRelease,
82+
ProjectArtifactBundle,
83+
ProguardArtifactRelease,
5584
DiscoverSavedQueryProject,
5685
IncidentProject,
5786
QuerySubscription,
5887
):
5988
relations.append(ModelRelation(m, {"project_id": instance.id}, BulkModelDeletionTask))
6089
relations.append(ModelRelation(Monitor, {"project_id": instance.id}))
61-
relations.append(ModelRelation(models.Group, {"project_id": instance.id}))
90+
relations.append(ModelRelation(Group, {"project_id": instance.id}))
6291
relations.append(
6392
ModelRelation(
6493
AlertRule,
@@ -69,10 +98,10 @@ def get_child_relations(self, instance):
6998
# Release needs to handle deletes after Group is cleaned up as the foreign
7099
# key is protected
71100
for m in (
72-
models.ReleaseProject,
73-
models.ReleaseProjectEnvironment,
74-
models.EventAttachment,
75-
models.ProjectDebugFile,
101+
ReleaseProject,
102+
ReleaseProjectEnvironment,
103+
EventAttachment,
104+
ProjectDebugFile,
76105
):
77106
relations.append(ModelRelation(m, {"project_id": instance.id}, ModelDeletionTask))
78107
return relations

0 commit comments

Comments
 (0)