diff --git a/src/sentry/integrations/bitbucket/search.py b/src/sentry/integrations/bitbucket/search.py index f164b81d5cc38d..4d09915de1c6d2 100644 --- a/src/sentry/integrations/bitbucket/search.py +++ b/src/sentry/integrations/bitbucket/search.py @@ -38,9 +38,8 @@ def get(self, request: Request, organization, integration_id, **kwds) -> Respons if not query: return Response({"detail": "query is a required parameter"}, status=400) - installation: BitbucketIntegration = integration.get_installation( - organization_id=organization.id - ) + installation = integration.get_installation(organization_id=organization.id) + assert isinstance(installation, BitbucketIntegration), installation if field == "externalIssue": repo = request.GET.get("repo") diff --git a/src/sentry/integrations/github/installation.py b/src/sentry/integrations/github/installation.py index 876f86b862dc5d..206576b6df3792 100644 --- a/src/sentry/integrations/github/installation.py +++ b/src/sentry/integrations/github/installation.py @@ -44,6 +44,7 @@ def get(self, request: Request, installation_id): if "sender" not in integration.metadata: return HttpResponse(status=404) + assert integration.date_added is not None time_elapsed_since_added = time.time() - integration.date_added.timestamp() if time_elapsed_since_added > INSTALLATION_EXPOSURE_MAX_TIME: return HttpResponse(status=404) diff --git a/src/sentry/integrations/github/search.py b/src/sentry/integrations/github/search.py index c36ed8c14378d0..1b7be34c88634b 100644 --- a/src/sentry/integrations/github/search.py +++ b/src/sentry/integrations/github/search.py @@ -7,7 +7,8 @@ from sentry.api.api_publish_status import ApiPublishStatus from sentry.api.base import control_silo_endpoint from sentry.api.bases.integration import IntegrationEndpoint -from sentry.integrations.github.integration import build_repository_query +from sentry.integrations.github.integration import GitHubIntegration, build_repository_query +from sentry.integrations.github_enterprise.integration import GitHubEnterpriseIntegration from sentry.models.integrations.integration import Integration from sentry.services.hybrid_cloud.organization import RpcOrganization from sentry.shared_integrations.exceptions import ApiError @@ -40,13 +41,16 @@ def get( return Response({"detail": "query is a required parameter"}, status=400) installation = integration.get_installation(organization.id) + assert isinstance( + installation, (GitHubIntegration, GitHubEnterpriseIntegration) + ), installation if field == "externalIssue": repo = request.GET.get("repo") if repo is None: return Response({"detail": "repo is a required parameter"}, status=400) try: - response = installation.search_issues(query=(f"repo:{repo} {query}").encode()) + response = installation.search_issues(query=f"repo:{repo} {query}") except ApiError as err: if err.code == 403: return Response({"detail": "Rate limit exceeded"}, status=429) diff --git a/src/sentry/integrations/gitlab/search.py b/src/sentry/integrations/gitlab/search.py index d965a3e58200fc..a5e14e088d6491 100644 --- a/src/sentry/integrations/gitlab/search.py +++ b/src/sentry/integrations/gitlab/search.py @@ -7,6 +7,7 @@ from sentry.api.api_publish_status import ApiPublishStatus from sentry.api.base import control_silo_endpoint from sentry.api.bases.integration import IntegrationEndpoint +from sentry.integrations.gitlab.integration import GitlabIntegration from sentry.models.integrations.integration import Integration from sentry.services.hybrid_cloud.organization import RpcOrganization from sentry.shared_integrations.exceptions import ApiError @@ -39,6 +40,7 @@ def get( return Response({"detail": "query is a required parameter"}, status=400) installation = integration.get_installation(organization.id) + assert isinstance(installation, GitlabIntegration), installation if field == "externalIssue": project = request.GET.get("project") diff --git a/src/sentry/integrations/jira/views/sentry_issue_details.py b/src/sentry/integrations/jira/views/sentry_issue_details.py index 99376c9e69e999..00f714d39d0af6 100644 --- a/src/sentry/integrations/jira/views/sentry_issue_details.py +++ b/src/sentry/integrations/jira/views/sentry_issue_details.py @@ -142,9 +142,7 @@ def get(self, request: Request, issue_key, *args, **kwargs) -> Response: external_issue = ExternalIssue.objects.get( integration_id=integration.id, key=issue_key ) - organization = Organization.objects.filter( - id=external_issue.organization_id - ).first() + organization = Organization.objects.get(id=external_issue.organization_id) if ( integration_service.get_organization_integration( organization_id=external_issue.organization_id, diff --git a/src/sentry/integrations/slack/sdk_client.py b/src/sentry/integrations/slack/sdk_client.py index 981bec03f89e2b..07950f92f86601 100644 --- a/src/sentry/integrations/slack/sdk_client.py +++ b/src/sentry/integrations/slack/sdk_client.py @@ -10,6 +10,7 @@ from sentry.integrations.request_buffer import IntegrationRequestBuffer from sentry.models.integrations import Integration from sentry.services.hybrid_cloud.integration import integration_service +from sentry.services.hybrid_cloud.integration.model import RpcIntegration from sentry.silo.base import SiloMode from sentry.utils import metrics @@ -104,7 +105,7 @@ class SlackSdkClient(WebClient, metaclass=MetaClass): def __init__(self, integration_id: int): self.integration_id = integration_id - integration = None + integration: Integration | RpcIntegration | None if SiloMode.get_current_mode() == SiloMode.REGION: integration = integration_service.get_integration(integration_id=integration_id) else: # control or monolith (local)