Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ref(sentry_apps): Move SentryAppInstallation model to sentry_apps #77649

Merged
merged 19 commits into from
Sep 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
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
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,6 @@ module = [
"sentry.middleware.auth",
"sentry.middleware.ratelimit",
"sentry.middleware.superuser",
"sentry.models.integrations.sentry_app_installation",
"sentry.models.organizationaccessrequest",
"sentry.monitors.consumers.monitor_consumer",
"sentry.monitors.endpoints.base",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
from sentry.api.serializers import serialize
from sentry.coreapi import APIError
from sentry.models.integrations.sentry_app_component import SentryAppComponent
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.organizations.services.organization.model import (
RpcOrganization,
RpcUserOrganizationContext,
)
from sentry.sentry_apps.components import SentryAppComponentPreparer
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation


# TODO(mgaeta): These endpoints are doing the same thing, but one takes a
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
from sentry.auth.staff import is_active_staff
from sentry.constants import SentryAppStatus
from sentry.mediators.sentry_app_installations.installation_notifier import InstallationNotifier
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.organizations.services.organization import organization_service
from sentry.sentry_apps.logic import SentryAppUpdater
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.utils.audit import create_audit_entry

logger = logging.getLogger(__name__)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from sentry.api.serializers.rest_framework import SentryAppInstallationSerializer
from sentry.mediators.sentry_app_installations.installation_notifier import InstallationNotifier
from sentry.mediators.sentry_app_installations.updater import Updater
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.utils.audit import create_audit_entry


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
from sentry.constants import SENTRY_APP_SLUG_MAX_LENGTH, SentryAppStatus
from sentry.features.exceptions import FeatureNotRegistered
from sentry.integrations.models.integration_feature import IntegrationFeature, IntegrationTypes
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.installations import SentryAppInstallationCreator
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation


class SentryAppInstallationsSerializer(serializers.Serializer):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
from sentry.api.serializers.models.apitoken import ApiTokenSerializer
from sentry.exceptions import ApiTokenLimitError
from sentry.models.apitoken import ApiToken
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.installations import SentryAppInstallationTokenCreator
from sentry.sentry_apps.models.sentry_app import MASKED_VALUE
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation


@control_silo_endpoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from sentry.api.api_publish_status import ApiPublishStatus
from sentry.api.base import StatsMixin, control_silo_endpoint
from sentry.api.bases import SentryAppBaseEndpoint, SentryAppStatsPermission
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation


@control_silo_endpoint
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
from sentry.auth.superuser import is_active_superuser
from sentry.constants import ObjectStatus
from sentry.db.models.query import in_iexact
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.project import Project
from sentry.models.projectplatform import ProjectPlatform
from sentry.search.utils import tokenize_query
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation


@region_silo_endpoint
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/serializers/models/rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
from sentry.api.serializers import Serializer, register
from sentry.constants import ObjectStatus
from sentry.models.environment import Environment
from sentry.models.integrations.sentry_app_installation import prepare_ui_component
from sentry.models.rule import NeglectedRule, Rule, RuleActivity, RuleActivityType
from sentry.models.rulefirehistory import RuleFireHistory
from sentry.models.rulesnooze import RuleSnooze
from sentry.sentry_apps.models.sentry_app_installation import prepare_ui_component
from sentry.sentry_apps.services.app.model import RpcSentryAppComponentContext
from sentry.users.services.user.service import user_service

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from sentry.api.serializers import Serializer, register
from sentry.constants import SentryAppInstallationStatus
from sentry.hybridcloud.services.organization_mapping import organization_mapping_service
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.users.models.user import User
from sentry.users.services.user import RpcUser

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
from sentry.constants import SentryAppInstallationStatus
from sentry.integrations.services.integration import integration_service
from sentry.integrations.slack.utils.channel import get_channel_id, validate_channel_id
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.notificationaction import ActionService, ActionTarget, NotificationAction
from sentry.models.project import Project
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.utils.strings import oxfordize_list


Expand Down
5 changes: 2 additions & 3 deletions src/sentry/deletions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ def load_defaults() -> None:
from sentry.models.rulefirehistory import RuleFireHistory
from sentry.monitors import models as monitor_models
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.snuba import models as snuba_models

from . import defaults
Expand Down Expand Up @@ -165,9 +166,7 @@ def load_defaults() -> None:
RepositoryProjectPathConfig, defaults.RepositoryProjectPathConfigDeletionTask
)
default_manager.register(SentryApp, defaults.SentryAppDeletionTask)
default_manager.register(
models.SentryAppInstallation, defaults.SentryAppInstallationDeletionTask
)
default_manager.register(SentryAppInstallation, defaults.SentryAppInstallationDeletionTask)
default_manager.register(
models.SentryAppInstallationToken, defaults.SentryAppInstallationTokenDeletionTask
)
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/deletions/defaults/sentry_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
class SentryAppDeletionTask(ModelDeletionTask):
def get_child_relations(self, instance):
from sentry.models.apiapplication import ApiApplication
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.users.models.user import User

return [
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/hybridcloud/apigateway/proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

from sentry import options
from sentry.api.exceptions import RequestTimeout
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.organizationmapping import OrganizationMapping
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.silo.util import (
PROXY_DIRECT_LOCATION_HEADER,
clean_outbound_headers,
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/incidents/endpoints/serializers/alert_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
)
from sentry.incidents.models.alert_rule_activations import AlertRuleActivations
from sentry.incidents.models.incident import Incident
from sentry.models.integrations.sentry_app_installation import prepare_ui_component
from sentry.models.rule import Rule
from sentry.models.rulesnooze import RuleSnooze
from sentry.sentry_apps.models.sentry_app_installation import prepare_ui_component
from sentry.sentry_apps.services.app import app_service
from sentry.sentry_apps.services.app.model import RpcSentryAppComponentContext
from sentry.snuba.models import SnubaQueryEventType
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/integrations/services/integration/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
serialize_integration_external_project,
serialize_organization_integration,
)
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.rules.actions.notify_event_service import find_alert_rule_action_ui_component
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.shared_integrations.exceptions import ApiError
from sentry.utils import json, metrics
from sentry.utils.sentry_apps import send_and_save_webhook_request
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/integrations/vercel/integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
)
from sentry.integrations.models.integration import Integration
from sentry.integrations.services.integration import integration_service
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.integrations.sentry_app_installation_for_provider import (
SentryAppInstallationForProvider,
)
Expand All @@ -28,6 +27,7 @@
from sentry.pipeline import NestedPipelineView
from sentry.projects.services.project_key import project_key_service
from sentry.sentry_apps.logic import SentryAppCreator
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.shared_integrations.exceptions import ApiError, IntegrationError
from sentry.users.models.user import User
from sentry.utils.http import absolute_uri
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/mediators/alert_rule_actions/creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from sentry.mediators.mediator import Mediator
from sentry.mediators.param import Param
from sentry.models.integrations.sentry_app_component import SentryAppComponent
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation


class AlertRuleActionCreator(Mediator):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from sentry.mediators.external_requests.util import send_and_save_sentry_app_request
from sentry.mediators.mediator import Mediator
from sentry.mediators.param import Param
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.utils import json

logger = logging.getLogger("sentry.mediators.external-requests")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from sentry.mediators.mediator import Mediator
from sentry.mediators.param import Param
from sentry.models.apigrant import ApiGrant
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.users.services.user.model import RpcUser
from sentry.utils.sentry_apps import send_and_save_webhook_request

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/mediators/sentry_app_installations/updater.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from sentry.constants import SentryAppInstallationStatus
from sentry.mediators.mediator import Mediator
from sentry.mediators.param import Param
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.services.app import RpcSentryAppInstallation


Expand Down
2 changes: 1 addition & 1 deletion src/sentry/mediators/token_exchange/grant_exchanger.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
from sentry.models.apiapplication import ApiApplication
from sentry.models.apigrant import ApiGrant
from sentry.models.apitoken import ApiToken
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.services.app import RpcSentryAppInstallation
from sentry.silo.safety import unguarded_write
from sentry.users.models.user import User
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/mediators/token_exchange/refresher.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
from sentry.mediators.token_exchange.validator import Validator
from sentry.models.apiapplication import ApiApplication
from sentry.models.apitoken import ApiToken
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.services.app import RpcSentryAppInstallation
from sentry.users.models.user import User

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@
import sentry.models.apitoken
import sentry.models.broadcast
import sentry.models.groupshare
import sentry.models.integrations.sentry_app_installation
import sentry.models.scheduledeletion
import sentry.models.servicehook
import sentry.sentry_apps.models.sentry_app
import sentry.sentry_apps.models.sentry_app_installation
import sentry.users.models.authenticator
import sentry.users.models.user
import sentry.utils.security.hash
Expand Down Expand Up @@ -1961,7 +1961,7 @@ class Migration(CheckedMigration):
(
"uuid",
models.CharField(
default=sentry.models.integrations.sentry_app_installation.default_uuid,
default=sentry.sentry_apps.models.sentry_app_installation.default_uuid,
max_length=64,
),
),
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/models/apitoken.py
Original file line number Diff line number Diff line change
Expand Up @@ -351,10 +351,10 @@ def sanitize_relocation_json(

@property
def organization_id(self) -> int | None:
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.integrations.sentry_app_installation_token import (
SentryAppInstallationToken,
)
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation

try:
installation = SentryAppInstallation.objects.get_by_api_token(self.id).get()
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/models/authprovider.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,11 @@ def get_scim_token(self):
return get_scim_token(self.flags.scim_enabled, self.organization_id, self.provider)

def enable_scim(self, user):
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.integrations.sentry_app_installation_for_provider import (
SentryAppInstallationForProvider,
)
from sentry.sentry_apps.logic import SentryAppCreator
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation

if (
not self.get_provider().can_use_scim(self.organization_id, user)
Expand Down
2 changes: 0 additions & 2 deletions src/sentry/models/integrations/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
__all__ = (
"SentryApp",
"SentryAppComponent",
"SentryAppInstallation",
"SentryAppInstallationForProvider",
"SentryAppInstallationToken",
)
Expand All @@ -10,7 +9,6 @@
# REQUIRED for migrations to run.
from sentry.integrations.types import ExternalProviders # NOQA
from sentry.models.integrations.sentry_app_component import SentryAppComponent
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.integrations.sentry_app_installation_for_provider import (
SentryAppInstallationForProvider,
)
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/receivers/outbox/control.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
from sentry.issues.services.issue import issue_service
from sentry.models.apiapplication import ApiApplication
from sentry.models.files.utils import get_relocation_storage
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.organizationmapping import OrganizationMapping
from sentry.organizations.services.organization import RpcOrganizationSignal, organization_service
from sentry.receivers.outbox import maybe_process_tombstone
from sentry.relocation.services.relocation_export.service import region_relocation_export_service
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.services.app.service import get_by_application_id, get_installation

logger = logging.getLogger(__name__)
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/sentry_apps/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

from sentry.mediators.external_requests.select_requester import SelectRequester
from sentry.models.integrations.sentry_app_component import SentryAppComponent
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.services.app.model import RpcSentryAppComponent, RpcSentryAppInstallation
from sentry.sentry_apps.services.app.serial import serialize_sentry_app_installation
from sentry.utils import json
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/sentry_apps/installations.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
from sentry.models.apiapplication import ApiApplication
from sentry.models.apigrant import ApiGrant
from sentry.models.apitoken import ApiToken
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.models.integrations.sentry_app_installation_token import SentryAppInstallationToken
from sentry.sentry_apps.models.sentry_app import SentryApp
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.services.hook import hook_service
from sentry.tasks.sentry_apps import installation_webhook
from sentry.users.models.user import User
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/sentry_apps/logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
from sentry.models.apiscopes import add_scope_hierarchy
from sentry.models.apitoken import ApiToken
from sentry.models.integrations.sentry_app_component import SentryAppComponent
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.installations import (
SentryAppInstallationCreator,
SentryAppInstallationTokenCreator,
Expand All @@ -37,6 +36,7 @@
SentryApp,
default_uuid,
)
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation
from sentry.tasks.sentry_apps import create_or_update_service_hooks_for_sentry_app
from sentry.users.models.user import User
from sentry.users.services.user.model import RpcUser
Expand Down
3 changes: 2 additions & 1 deletion src/sentry/sentry_apps/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .sentry_app import SentryApp
from .sentry_app_installation import SentryAppInstallation

__all__ = ("SentryApp",)
__all__ = ("SentryApp", "SentryAppInstallation")
2 changes: 1 addition & 1 deletion src/sentry/sentry_apps/models/sentry_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ def update(self, *args, **kwargs):
return result

def is_installed_on(self, organization):
from sentry.models.integrations.sentry_app_installation import SentryAppInstallation
from sentry.sentry_apps.models.sentry_app_installation import SentryAppInstallation

return SentryAppInstallation.objects.filter(
organization_id=organization.id,
Expand Down
Loading
Loading