Skip to content

Commit 83c1bff

Browse files
authored
🔧 chore: use IntegrationProviderSlug.Slack instead of magic str (#95390)
1 parent 6477736 commit 83c1bff

File tree

15 files changed

+49
-24
lines changed

15 files changed

+49
-24
lines changed

src/sentry/identity/slack/provider.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
from sentry import options
22
from sentry.identity.oauth2 import OAuth2CallbackView, OAuth2LoginView, OAuth2Provider
33
from sentry.identity.pipeline import IdentityPipeline
4+
from sentry.integrations.types import IntegrationProviderSlug
45
from sentry.pipeline.views.base import PipelineView
56

67

78
class SlackIdentityProvider(OAuth2Provider):
8-
key = "slack"
9+
key = IntegrationProviderSlug.SLACK.value
910
name = "Slack"
1011

1112
# This identity provider is used for authorizing the Slack application
@@ -61,7 +62,7 @@ def build_identity(self, data):
6162
data = data["data"]
6263

6364
return {
64-
"type": "slack",
65+
"type": IntegrationProviderSlug.SLACK.value,
6566
# TODO(epurkhiser): See note above
6667
"id": data["user"]["id"],
6768
"email": data["user"]["email"],

src/sentry/integrations/messaging/linkage.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
from sentry.integrations.models.external_actor import ExternalActor
2121
from sentry.integrations.models.integration import Integration
2222
from sentry.integrations.services.integration import RpcIntegration, integration_service
23-
from sentry.integrations.types import ExternalProviderEnum, ExternalProviders
23+
from sentry.integrations.types import (
24+
ExternalProviderEnum,
25+
ExternalProviders,
26+
IntegrationProviderSlug,
27+
)
2428
from sentry.integrations.utils.identities import get_identity_or_404
2529
from sentry.models.organizationmember import OrganizationMember
2630
from sentry.models.team import Team
@@ -460,7 +464,8 @@ def execute(
460464
logger_params["team_id"] = team.id
461465

462466
idp = identity_service.get_provider(
463-
provider_type="slack", provider_ext_id=integration.external_id
467+
provider_type=IntegrationProviderSlug.SLACK.value,
468+
provider_ext_id=integration.external_id,
464469
)
465470
logger_params["provider_ext_id"] = integration.external_id
466471
if idp is None:

src/sentry/integrations/slack/actions/notification.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from sentry.integrations.slack.spec import SlackMessagingSpec
3333
from sentry.integrations.slack.utils.channel import SlackChannelIdData, get_channel_id
3434
from sentry.integrations.slack.utils.threads import NotificationActionThreadUtils
35+
from sentry.integrations.types import IntegrationProviderSlug
3536
from sentry.integrations.utils.metrics import EventLifecycle
3637
from sentry.issues.grouptype import GroupCategory
3738
from sentry.models.options.organization_option import OrganizationOption
@@ -51,7 +52,7 @@
5152
class SlackNotifyServiceAction(IntegrationEventAction):
5253
id = "sentry.integrations.slack.notify_action.SlackNotifyServiceAction"
5354
prompt = "Send a Slack notification"
54-
provider = "slack"
55+
provider = IntegrationProviderSlug.SLACK.value
5556
integration_key = "workspace"
5657
label = "Send a notification to the {workspace} Slack workspace to {channel} (optionally, an ID: {channel_id}) and show tags {tags} and notes {notes} in notification"
5758

src/sentry/integrations/slack/integration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class SlackIntegrationProvider(IntegrationProvider):
132132
def _identity_pipeline_view(self) -> PipelineView[IntegrationPipeline]:
133133
return NestedPipelineView(
134134
bind_key="identity",
135-
provider_key="slack",
135+
provider_key=IntegrationProviderSlug.SLACK.value,
136136
pipeline_cls=IdentityPipeline,
137137
config={
138138
"oauth_scopes": self.identity_oauth_scopes,
@@ -184,7 +184,7 @@ def build_integration(self, state: Mapping[str, Any]) -> IntegrationData:
184184
"external_id": team_id,
185185
"metadata": metadata,
186186
"user_identity": {
187-
"type": "slack",
187+
"type": IntegrationProviderSlug.SLACK.value,
188188
"external_id": user_id_slack,
189189
"scopes": [],
190190
"data": {},

src/sentry/integrations/slack/requests/base.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from sentry.identity.services.identity.model import RpcIdentityProvider
1616
from sentry.integrations.messaging.commands import CommandInput
1717
from sentry.integrations.services.integration import RpcIntegration, integration_service
18+
from sentry.integrations.types import IntegrationProviderSlug
1819
from sentry.users.services.user import RpcUser
1920
from sentry.users.services.user.service import user_service
2021
from sentry.utils.safe import get_path
@@ -99,7 +100,7 @@ def _get_context(self):
99100
except Exception:
100101
pass
101102
context = integration_service.get_integration_identity_context(
102-
integration_provider="slack",
103+
integration_provider=IntegrationProviderSlug.SLACK.value,
103104
integration_external_id=team_id,
104105
identity_external_id=user_id,
105106
identity_provider_external_id=team_id,
@@ -162,7 +163,7 @@ def get_identity(self) -> RpcIdentity | None:
162163

163164
if self._provider is None:
164165
self._provider = identity_service.get_provider(
165-
provider_type="slack", provider_ext_id=self.team_id
166+
provider_type=IntegrationProviderSlug.SLACK.value, provider_ext_id=self.team_id
166167
)
167168

168169
if self._provider is not None:
@@ -225,7 +226,9 @@ def _check_verification_token(self, verification_token: str) -> bool:
225226
def validate_integration(self) -> None:
226227
if not self._integration:
227228
self._integration = integration_service.get_integration(
228-
provider="slack", external_id=self.team_id, status=ObjectStatus.ACTIVE
229+
provider=IntegrationProviderSlug.SLACK.value,
230+
external_id=self.team_id,
231+
status=ObjectStatus.ACTIVE,
229232
)
230233

231234
if not self._integration:

src/sentry/integrations/slack/sdk_client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from sentry.integrations.models import Integration
1212
from sentry.integrations.services.integration import integration_service
1313
from sentry.integrations.services.integration.model import RpcIntegration
14+
from sentry.integrations.types import IntegrationProviderSlug
1415
from sentry.silo.base import SiloMode
1516
from sentry.utils import metrics
1617

@@ -32,7 +33,7 @@ def track_response_data(response: SlackResponse, method: str, error: str | None
3233
)
3334

3435
extra = {
35-
"integration": "slack",
36+
"integration": IntegrationProviderSlug.SLACK.value,
3637
"status_string": str(code),
3738
"error": error,
3839
"method": method,

src/sentry/integrations/slack/spec.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
MessagingIdentityLinkViewSet,
1313
MessagingIntegrationSpec,
1414
)
15+
from sentry.integrations.types import IntegrationProviderSlug
1516
from sentry.models.organization import Organization
1617
from sentry.notifications.models.notificationaction import ActionService
1718
from sentry.rules.actions import IntegrationEventAction
@@ -20,7 +21,7 @@
2021
class SlackMessagingSpec(MessagingIntegrationSpec):
2122
@property
2223
def provider_slug(self) -> str:
23-
return "slack"
24+
return IntegrationProviderSlug.SLACK.value
2425

2526
@property
2627
def action_service(self) -> ActionService:

src/sentry/integrations/slack/tasks/find_channel_id_for_alert_rule.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from sentry.incidents.serializers import AlertRuleSerializer
1616
from sentry.integrations.slack.utils.constants import SLACK_RATE_LIMITED_MESSAGE
1717
from sentry.integrations.slack.utils.rule_status import RedisRuleStatus
18+
from sentry.integrations.types import IntegrationProviderSlug
1819
from sentry.models.organization import Organization
1920
from sentry.shared_integrations.exceptions import ApiRateLimitedError
2021
from sentry.silo.base import SiloMode
@@ -85,7 +86,7 @@ def find_channel_id_for_alert_rule(
8586

8687
for trigger in data["triggers"]:
8788
for action in trigger["actions"]:
88-
if action["type"] == "slack":
89+
if action["type"] == IntegrationProviderSlug.SLACK.value:
8990
if action["targetIdentifier"] in mapped_ids:
9091
action["input_channel_id"] = mapped_ids[action["targetIdentifier"]]
9192
# This will conflict within the CamelCaseSerializer below.

src/sentry/integrations/slack/tasks/find_channel_id_for_rule.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
)
1111
from sentry.integrations.slack.utils.constants import SLACK_RATE_LIMITED_MESSAGE
1212
from sentry.integrations.slack.utils.rule_status import RedisRuleStatus
13+
from sentry.integrations.types import IntegrationProviderSlug
1314
from sentry.models.project import Project
1415
from sentry.models.rule import Rule, RuleActivity, RuleActivityType
1516
from sentry.projects.project_rules.creator import ProjectRuleCreator
@@ -60,7 +61,9 @@ def find_channel_id_for_rule(
6061
break
6162

6263
integrations = integration_service.get_integrations(
63-
organization_id=organization.id, providers=["slack"], integration_ids=[integration_id]
64+
organization_id=organization.id,
65+
providers=[IntegrationProviderSlug.SLACK.value],
66+
integration_ids=[integration_id],
6467
)
6568
if not integrations:
6669
redis_rule_status.set_value("failed")

src/sentry/integrations/slack/webhooks/action.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from sentry.integrations.slack.sdk_client import SlackSdkClient
3838
from sentry.integrations.slack.spec import SlackMessagingSpec
3939
from sentry.integrations.slack.utils.errors import MODAL_NOT_FOUND, unpack_slack_api_error
40-
from sentry.integrations.types import ExternalProviderEnum
40+
from sentry.integrations.types import ExternalProviderEnum, IntegrationProviderSlug
4141
from sentry.integrations.utils.scope import bind_org_context_from_integration
4242
from sentry.models.activity import ActivityIntegration
4343
from sentry.models.group import Group
@@ -702,7 +702,9 @@ def handle_member_approval(self, slack_request: SlackActionRequest, action: str)
702702
original_status = InviteStatus(member.invite_status)
703703
try:
704704
if action == "approve_member":
705-
member.approve_member_invitation(identity_user, referrer="slack")
705+
member.approve_member_invitation(
706+
identity_user, referrer=IntegrationProviderSlug.SLACK.value
707+
)
706708
else:
707709
member.reject_member_invitation(identity_user)
708710
except Exception:

0 commit comments

Comments
 (0)