|
@@ -16,6 +16,7 @@ from sentry.models.groupseen import GroupSeen
|
|
|
from sentry.models.groupshare import GroupShare
|
|
|
from sentry.models.groupsubscription import GroupSubscription
|
|
|
from sentry.models.organization import Organization, OrganizationStatus
|
|
|
+from sentry.models.organizationmapping import OrganizationMapping
|
|
|
from sentry.models.organizationmember import InviteStatus, OrganizationMember
|
|
|
from sentry.models.organizationmemberteam import OrganizationMemberTeam
|
|
|
from sentry.models.outbox import ControlOutbox, OutboxCategory, OutboxScope, outbox_context
|
|
@@ -24,6 +25,7 @@ from sentry.models.team import Team, TeamStatus
|
|
|
from sentry.services.hybrid_cloud import OptionValue, logger
|
|
|
from sentry.services.hybrid_cloud.app import app_service
|
|
|
from sentry.services.hybrid_cloud.organization import (
|
|
|
+ OrganizationCheckService,
|
|
|
OrganizationService,
|
|
|
OrganizationSignalService,
|
|
|
RpcOrganization,
|
|
@@ -258,17 +260,6 @@ class DatabaseBackedOrganizationService(OrganizationService):
|
|
|
return None
|
|
|
return serialize_member(org_member)
|
|
|
|
|
|
- def check_organization_by_slug(self, *, slug: str, only_visible: bool) -> Optional[int]:
|
|
|
- try:
|
|
|
- org = Organization.objects.get_from_cache(slug=slug)
|
|
|
- if only_visible and org.status != OrganizationStatus.ACTIVE:
|
|
|
- raise Organization.DoesNotExist
|
|
|
- return org.id
|
|
|
- except Organization.DoesNotExist:
|
|
|
- logger.info("Organization by slug [%s] not found", slug)
|
|
|
-
|
|
|
- return None
|
|
|
-
|
|
|
def _query_organizations(
|
|
|
self, user_id: int, scope: Optional[str], only_visible: bool
|
|
|
) -> List[Organization]:
|
|
@@ -632,6 +623,34 @@ class DatabaseBackedOrganizationService(OrganizationService):
|
|
|
return list(map(serialize_member, owner_members))
|
|
|
|
|
|
|
|
|
+class ControlOrganizationCheckService(OrganizationCheckService):
|
|
|
+ def check_organization_by_slug(self, *, slug: str, only_visible: bool) -> Optional[int]:
|
|
|
+ # See RegionOrganizationCheckService below
|
|
|
+ try:
|
|
|
+ org = OrganizationMapping.objects.get(slug=slug)
|
|
|
+ if only_visible and org.status != OrganizationStatus.ACTIVE:
|
|
|
+ raise OrganizationMapping.DoesNotExist
|
|
|
+ return org.organization_id
|
|
|
+ except OrganizationMapping.DoesNotExist:
|
|
|
+ logger.info("OrganizationMapping by slug [%s] not found", slug)
|
|
|
+
|
|
|
+ return None
|
|
|
+
|
|
|
+
|
|
|
+class RegionOrganizationCheckService(OrganizationCheckService):
|
|
|
+ def check_organization_by_slug(self, *, slug: str, only_visible: bool) -> Optional[int]:
|
|
|
+ # See ControlOrganizationCheckService above
|
|
|
+ try:
|
|
|
+ org = Organization.objects.get_from_cache(slug=slug)
|
|
|
+ if only_visible and org.status != OrganizationStatus.ACTIVE:
|
|
|
+ raise Organization.DoesNotExist
|
|
|
+ return org.id
|
|
|
+ except Organization.DoesNotExist:
|
|
|
+ logger.info("Organization by slug [%s] not found", slug)
|
|
|
+
|
|
|
+ return None
|
|
|
+
|
|
|
+
|
|
|
class OutboxBackedOrganizationSignalService(OrganizationSignalService):
|
|
|
def schedule_signal(
|
|
|
self, signal: Signal, organization_id: int, args: Mapping[str, Optional[Union[str, int]]]
|