Skip to content

Commit

Permalink
ref: fix types for sentry.integrations when BaseManager is typechecked (
Browse files Browse the repository at this point in the history
#72812)

<!-- Describe your PR here. -->
  • Loading branch information
asottile-sentry authored Jun 17, 2024
1 parent 7635a15 commit bd7650b
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 9 deletions.
5 changes: 2 additions & 3 deletions src/sentry/integrations/bitbucket/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
1 change: 1 addition & 0 deletions src/sentry/integrations/github/installation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 6 additions & 2 deletions src/sentry/integrations/github/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions src/sentry/integrations/gitlab/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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")
Expand Down
4 changes: 1 addition & 3 deletions src/sentry/integrations/jira/views/sentry_issue_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion src/sentry/integrations/slack/sdk_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit bd7650b

Please sign in to comment.