Skip to content

Commit 248d63f

Browse files
committed
use apps.get_model(..) where possible
1 parent c3bc470 commit 248d63f

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

src/sentry/migrations/0726_apitoken_backfill_hashes.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,51 @@
1616
def backfill_hash_values(apps: StateApps, schema_editor: BaseDatabaseSchemaEditor) -> None:
1717
ApiToken = apps.get_model("sentry", "ApiToken")
1818
ControlOutbox = apps.get_model("sentry", "ControlOutbox")
19+
OrganizationMemberMapping = apps.get_model("sentry", "OrganizationMemberMapping")
20+
OrganizationMapping = apps.get_model("sentry", "OrganizationMapping")
21+
1922
try:
23+
from collections.abc import Container
24+
25+
from django.conf import settings
26+
2027
from sentry.models.outbox import OutboxCategory, OutboxScope
28+
from sentry.services.hybrid_cloud.util import control_silo_function
29+
from sentry.silo.base import SiloMode
2130
from sentry.silo.safety import unguarded_write
22-
from sentry.types.region import find_regions_for_user
2331
except ImportError:
2432
logger.exception("Cannot execute migration. Required symbols could not be imported")
2533
return
2634

35+
@control_silo_function
36+
def _find_orgs_for_user(user_id: int) -> set[int]:
37+
return {
38+
m["organization_id"]
39+
for m in OrganizationMemberMapping.objects.filter(user_id=user_id).values(
40+
"organization_id"
41+
)
42+
}
43+
44+
@control_silo_function
45+
def find_regions_for_orgs(org_ids: Container[int]) -> set[str]:
46+
47+
if SiloMode.get_current_mode() == SiloMode.MONOLITH:
48+
return {settings.SENTRY_MONOLITH_REGION}
49+
else:
50+
return set(
51+
OrganizationMapping.objects.filter(organization_id__in=org_ids).values_list(
52+
"region_name", flat=True
53+
)
54+
)
55+
56+
@control_silo_function
57+
def find_regions_for_user(user_id: int) -> set[str]:
58+
if SiloMode.get_current_mode() == SiloMode.MONOLITH:
59+
return {settings.SENTRY_MONOLITH_REGION}
60+
61+
org_ids = _find_orgs_for_user(user_id)
62+
return find_regions_for_orgs(org_ids)
63+
2764
for api_token in RangeQuerySetWrapperWithProgressBar(ApiToken.objects.all()):
2865
hashed_token = None
2966
if api_token.hashed_token is None:

0 commit comments

Comments
 (0)