Skip to content

Commit 3d38669

Browse files
ref(control_silo): Move UserEmail model to users module
Part of moving control silo user related resources into the users module. Includes adding of types for functions. Apart of (#73856)
1 parent 8c40a20 commit 3d38669

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+46
-46
lines changed

src/sentry/api/endpoints/oauth_userinfo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from sentry.api.base import Endpoint, control_silo_endpoint
99
from sentry.api.exceptions import ParameterValidationError, ResourceDoesNotExist, SentryAPIException
1010
from sentry.models.apitoken import ApiToken
11-
from sentry.models.useremail import UserEmail
11+
from sentry.users.models.useremail import UserEmail
1212

1313

1414
class InsufficientScopesError(SentryAPIException):

src/sentry/api/endpoints/organization_details.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
from sentry.models.options.organization_option import OrganizationOption
7878
from sentry.models.organization import Organization, OrganizationStatus
7979
from sentry.models.scheduledeletion import RegionScheduledDeletion
80-
from sentry.models.useremail import UserEmail
8180
from sentry.organizations.services.organization import organization_service
8281
from sentry.organizations.services.organization.model import (
8382
RpcOrganization,
@@ -88,6 +87,7 @@
8887
OrganizationSlugCollisionException,
8988
organization_provisioning_service,
9089
)
90+
from sentry.users.models.useremail import UserEmail
9191
from sentry.users.services.user.serial import serialize_generic_user
9292
from sentry.utils.audit import create_audit_entry
9393

src/sentry/api/endpoints/user_details.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
from sentry.models.organization import OrganizationStatus
2626
from sentry.models.organizationmapping import OrganizationMapping
2727
from sentry.models.organizationmembermapping import OrganizationMemberMapping
28-
from sentry.models.useremail import UserEmail
2928
from sentry.organizations.services.organization import organization_service
3029
from sentry.organizations.services.organization.model import RpcOrganizationDeleteState
3130
from sentry.users.models.user import User
31+
from sentry.users.models.useremail import UserEmail
3232
from sentry.users.services.user.serial import serialize_generic_user
3333
from sentry.utils.dates import AVAILABLE_TIMEZONES
3434

src/sentry/api/endpoints/user_emails.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
from sentry.api.serializers import serialize
1212
from sentry.api.validators import AllowedEmailField
1313
from sentry.models.options.user_option import UserOption
14-
from sentry.models.useremail import UserEmail
1514
from sentry.users.models.user import User
15+
from sentry.users.models.useremail import UserEmail
1616

1717
logger = logging.getLogger("sentry.accounts")
1818

src/sentry/api/endpoints/user_emails_confirm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
from sentry.api.base import control_silo_endpoint
99
from sentry.api.bases.user import UserEndpoint
1010
from sentry.api.validators import AllowedEmailField
11-
from sentry.models.useremail import UserEmail
1211
from sentry.types.ratelimit import RateLimit, RateLimitCategory
12+
from sentry.users.models.useremail import UserEmail
1313

1414
logger = logging.getLogger("sentry.accounts")
1515

src/sentry/api/endpoints/user_notification_email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from sentry.api.base import control_silo_endpoint
99
from sentry.api.bases.user import UserEndpoint
1010
from sentry.models.options.user_option import UserOption
11-
from sentry.models.useremail import UserEmail
11+
from sentry.users.models.useremail import UserEmail
1212

1313
INVALID_EMAIL_MSG = (
1414
"Invalid email value(s) provided. Email values must be verified emails for the given user."

src/sentry/api/endpoints/user_subscriptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
from sentry.api.api_publish_status import ApiPublishStatus
88
from sentry.api.base import control_silo_endpoint
99
from sentry.api.bases.user import UserEndpoint
10-
from sentry.models.useremail import UserEmail
1110
from sentry.users.models.user import User
11+
from sentry.users.models.useremail import UserEmail
1212

1313

1414
class DefaultNewsletterValidator(serializers.Serializer):

src/sentry/api/invite_helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
from sentry import audit_log, features
1010
from sentry.models.authidentity import AuthIdentity
1111
from sentry.models.authprovider import AuthProvider
12-
from sentry.models.useremail import UserEmail
1312
from sentry.organizations.services.organization import (
1413
RpcOrganizationMember,
1514
RpcUserInviteContext,
1615
organization_service,
1716
)
1817
from sentry.signals import member_joined
1918
from sentry.users.models.user import User
19+
from sentry.users.models.useremail import UserEmail
2020
from sentry.utils import metrics
2121
from sentry.utils.audit import create_audit_entry
2222

src/sentry/api/serializers/models/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
from sentry.models.organization import OrganizationStatus
2424
from sentry.models.organizationmapping import OrganizationMapping
2525
from sentry.models.organizationmembermapping import OrganizationMemberMapping
26-
from sentry.models.useremail import UserEmail
2726
from sentry.models.userpermission import UserPermission
2827
from sentry.models.userrole import UserRoleUser
2928
from sentry.organizations.services.organization import RpcOrganizationSummary
3029
from sentry.users.models.authenticator import Authenticator
3130
from sentry.users.models.user import User
31+
from sentry.users.models.useremail import UserEmail
3232
from sentry.users.services.user import RpcUser
3333
from sentry.utils.avatar import get_gravatar_url
3434

src/sentry/api/serializers/models/useremail.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from sentry.api.serializers import Serializer, register
2-
from sentry.models.useremail import UserEmail
2+
from sentry.users.models.useremail import UserEmail
33

44

55
@register(UserEmail)

src/sentry/auth/email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
from dataclasses import dataclass
66

77
from sentry.models.organization import Organization
8-
from sentry.models.useremail import UserEmail
98
from sentry.organizations.services.organization import organization_service
109
from sentry.users.models.user import User
10+
from sentry.users.models.useremail import UserEmail
1111
from sentry.utils import metrics
1212

1313

src/sentry/integrations/slack/tasks/link_slack_user_identities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
from sentry.integrations.slack.utils.users import SlackUserData, get_slack_data_by_user
1010
from sentry.integrations.utils import get_identities_by_user
1111
from sentry.models.identity import Identity, IdentityProvider, IdentityStatus
12-
from sentry.models.useremail import UserEmail
1312
from sentry.organizations.services.organization import organization_service
1413
from sentry.silo.base import SiloMode
1514
from sentry.tasks.base import instrumented_task
1615
from sentry.users.models.user import User
16+
from sentry.users.models.useremail import UserEmail
1717

1818
logger = logging.getLogger("sentry.integrations.slack.tasks")
1919

src/sentry/models/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from sentry.users.models.authenticator import * # NOQA
22
from sentry.users.models.email import * # NOQA
33
from sentry.users.models.user import * # NOQA
4+
from sentry.users.models.useremail import * # NOQA
45

56
from .activity import * # NOQA
67
from .apiapplication import * # NOQA
@@ -119,7 +120,6 @@
119120
from .teamreplica import * # NOQA
120121
from .tombstone import * # NOQA
121122
from .transaction_threshold import * # NOQA
122-
from .useremail import * # NOQA
123123
from .userip import * # NOQA
124124
from .userpermission import * # NOQA
125125
from .userreport import * # NOQA

src/sentry/newsletter/dummy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def __init__(
2626
unsubscribed_date=None,
2727
**kwargs,
2828
):
29-
from sentry.models.useremail import UserEmail
29+
from sentry.users.models.useremail import UserEmail
3030

3131
self.email = user.email or email
3232
self.list_id = list_id

src/sentry/receivers/email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from django.db import IntegrityError, router, transaction
22
from django.db.models.signals import post_delete, post_save
33

4-
from sentry.models.useremail import UserEmail
54
from sentry.users.models.email import Email
5+
from sentry.users.models.useremail import UserEmail
66

77

88
def create_email(instance, created, **kwargs):

src/sentry/receivers/useremail.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from django.db import IntegrityError
22
from django.db.models.signals import post_save
33

4-
from sentry.models.useremail import UserEmail
54
from sentry.users.models.user import User
5+
from sentry.users.models.useremail import UserEmail
66

77

88
def create_user_email(instance, created, **kwargs):

src/sentry/tasks/auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
from sentry.auth.exceptions import ProviderNotRegistered
1313
from sentry.models.organization import Organization
1414
from sentry.models.organizationmember import OrganizationMember
15-
from sentry.models.useremail import UserEmail
1615
from sentry.organizations.services.organization.service import organization_service
1716
from sentry.silo.base import SiloMode
1817
from sentry.silo.safety import unguarded_write
1918
from sentry.tasks.base import instrumented_task, retry
2019
from sentry.types.region import RegionMappingNotFound
2120
from sentry.users.models.user import User
21+
from sentry.users.models.useremail import UserEmail
2222
from sentry.users.services.user import RpcUser
2323
from sentry.users.services.user.service import user_service
2424
from sentry.utils.audit import create_audit_entry_from_user

src/sentry/testutils/cases.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@
111111
from sentry.models.releasecommit import ReleaseCommit
112112
from sentry.models.repository import Repository
113113
from sentry.models.rule import RuleSource
114-
from sentry.models.useremail import UserEmail
115114
from sentry.monitors.models import Monitor, MonitorEnvironment, MonitorType, ScheduleType
116115
from sentry.notifications.notifications.base import alert_page_needs_org_id
117116
from sentry.notifications.types import FineTuningAPIKey
@@ -146,6 +145,7 @@
146145
from sentry.testutils.pytest.selenium import Browser
147146
from sentry.types.condition_activity import ConditionActivity, ConditionActivityType
148147
from sentry.users.models.user import User
148+
from sentry.users.models.useremail import UserEmail
149149
from sentry.utils import json
150150
from sentry.utils.auth import SsoSession
151151
from sentry.utils.json import dumps_htmlsafe

src/sentry/testutils/factories.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@
138138
from sentry.models.savedsearch import SavedSearch
139139
from sentry.models.servicehook import ServiceHook
140140
from sentry.models.team import Team
141-
from sentry.models.useremail import UserEmail
142141
from sentry.models.userpermission import UserPermission
143142
from sentry.models.userreport import UserReport
144143
from sentry.models.userrole import UserRole
@@ -168,6 +167,7 @@
168167
UptimeSubscription,
169168
)
170169
from sentry.users.models.user import User
170+
from sentry.users.models.useremail import UserEmail
171171
from sentry.users.services.user import RpcUser
172172
from sentry.utils import loremipsum
173173
from sentry.utils.performance_issues.performance_problem import PerformanceProblem

src/sentry/users/models/email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class Meta:
3333

3434
@classmethod
3535
def query_for_relocation_export(cls, q: models.Q, pk_map: PrimaryKeyMap) -> models.Q:
36-
from sentry.models.useremail import UserEmail
3736
from sentry.users.models.user import User
37+
from sentry.users.models.useremail import UserEmail
3838

3939
# `Sentry.Email` models don't have any explicit dependencies on `Sentry.User`, so we need to
4040
# find them manually via `UserEmail`.

src/sentry/users/models/user.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@
4646
from sentry.models.organizationmapping import OrganizationMapping
4747
from sentry.models.organizationmembermapping import OrganizationMemberMapping
4848
from sentry.models.orgauthtoken import OrgAuthToken
49-
from sentry.models.useremail import UserEmail
5049
from sentry.organizations.services.organization import RpcRegionUser, organization_service
5150
from sentry.types.region import find_all_region_names, find_regions_for_user
5251
from sentry.users.models.authenticator import Authenticator
52+
from sentry.users.models.useremail import UserEmail
5353
from sentry.users.services.user import RpcUser
5454
from sentry.utils.http import absolute_uri
5555
from sentry.utils.retries import TimedRetryPolicy
@@ -341,8 +341,8 @@ def merge_to(from_user: User, to_user: User) -> None:
341341
from sentry.models.identity import Identity
342342
from sentry.models.options.user_option import UserOption
343343
from sentry.models.organizationmembermapping import OrganizationMemberMapping
344-
from sentry.models.useremail import UserEmail
345344
from sentry.users.models.authenticator import Authenticator
345+
from sentry.users.models.useremail import UserEmail
346346

347347
from_user_id = from_user.id
348348
to_user_id = to_user.id
File renamed without changes.

src/sentry/users/services/user/impl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
from sentry.models.organization import OrganizationStatus
2626
from sentry.models.organizationmapping import OrganizationMapping
2727
from sentry.models.organizationmembermapping import OrganizationMemberMapping
28-
from sentry.models.useremail import UserEmail
2928
from sentry.signals import user_signup
3029
from sentry.users.models.user import User
30+
from sentry.users.models.useremail import UserEmail
3131
from sentry.users.services.user import (
3232
RpcAvatar,
3333
RpcUser,

src/sentry/web/frontend/accounts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
from sentry.models.lostpasswordhash import LostPasswordHash
1414
from sentry.models.organizationmapping import OrganizationMapping
1515
from sentry.models.organizationmembermapping import OrganizationMemberMapping
16-
from sentry.models.useremail import UserEmail
1716
from sentry.organizations.services.organization import organization_service
1817
from sentry.security.utils import capture_security_activity
1918
from sentry.signals import email_verified, terms_accepted
2019
from sentry.silo.base import control_silo_function
2120
from sentry.users.models.user import User
21+
from sentry.users.models.useremail import UserEmail
2222
from sentry.users.services.lost_password_hash import lost_password_hash_service
2323
from sentry.users.services.user.service import user_service
2424
from sentry.utils import auth

src/sentry/web/frontend/openidtoken.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.utils import timezone
44

55
from sentry.models.apigrant import ApiGrant
6-
from sentry.models.useremail import UserEmail
6+
from sentry.users.models.useremail import UserEmail
77
from sentry.utils import jwt as jwt_utils
88

99
DEFAULT_EXPIRATION = timedelta(minutes=10)

tests/sentry/api/endpoints/test_organization_member_index.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from sentry.api.invite_helper import ApiInviteHelper
1010
from sentry.models.organizationmember import InviteStatus, OrganizationMember
1111
from sentry.models.organizationmemberteam import OrganizationMemberTeam
12-
from sentry.models.useremail import UserEmail
1312
from sentry.roles import organization_roles
1413
from sentry.silo.base import SiloMode
1514
from sentry.testutils.cases import APITestCase, TestCase
@@ -18,6 +17,7 @@
1817
from sentry.testutils.outbox import outbox_runner
1918
from sentry.testutils.silo import assume_test_silo_mode
2019
from sentry.users.models.authenticator import Authenticator
20+
from sentry.users.models.useremail import UserEmail
2121

2222

2323
def mock_organization_roles_get_factory(original_organization_roles_get):

tests/sentry/api/endpoints/test_user_authenticator_enroll.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from sentry.models.auditlogentry import AuditLogEntry
1212
from sentry.models.organization import Organization
1313
from sentry.models.organizationmember import OrganizationMember
14-
from sentry.models.useremail import UserEmail
1514
from sentry.organizations.services.organization.serial import serialize_member
1615
from sentry.silo.base import SiloMode
1716
from sentry.silo.safety import unguarded_write
@@ -20,6 +19,7 @@
2019
from sentry.testutils.outbox import outbox_runner
2120
from sentry.testutils.silo import assume_test_silo_mode, control_silo_test
2221
from sentry.users.models.authenticator import Authenticator
22+
from sentry.users.models.useremail import UserEmail
2323
from tests.sentry.api.endpoints.test_user_authenticator_details import assert_security_email_sent
2424

2525

tests/sentry/api/endpoints/test_user_emails.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from django.urls import reverse
22

33
from sentry.models.options.user_option import UserOption
4-
from sentry.models.useremail import UserEmail
54
from sentry.testutils.cases import APITestCase
65
from sentry.testutils.silo import control_silo_test
76
from sentry.users.models.user import User
7+
from sentry.users.models.useremail import UserEmail
88

99

1010
@control_silo_test

tests/sentry/api/endpoints/test_user_emails_confirm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from unittest import mock
22

3-
from sentry.models.useremail import UserEmail
43
from sentry.testutils.cases import APITestCase
54
from sentry.testutils.silo import control_silo_test
5+
from sentry.users.models.useremail import UserEmail
66

77

88
@control_silo_test

tests/sentry/api/endpoints/test_user_notification_email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from sentry.models.options.user_option import UserOption
2-
from sentry.models.useremail import UserEmail
32
from sentry.testutils.cases import APITestCase
43
from sentry.testutils.silo import control_silo_test
4+
from sentry.users.models.useremail import UserEmail
55

66

77
class UserNotificationEmailTestBase(APITestCase):

tests/sentry/api/endpoints/test_user_subscriptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
from django.conf import settings
33

44
from sentry import newsletter
5-
from sentry.models.useremail import UserEmail
65
from sentry.newsletter.dummy import DummyNewsletter
76
from sentry.testutils.cases import APITestCase
87
from sentry.testutils.silo import control_silo_test
8+
from sentry.users.models.useremail import UserEmail
99

1010

1111
@pytest.mark.skipif(

tests/sentry/api/serializers/test_release.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
from sentry.models.releasecommit import ReleaseCommit
2020
from sentry.models.releaseprojectenvironment import ReleaseProjectEnvironment, ReleaseStages
2121
from sentry.models.releases.release_project import ReleaseProject
22-
from sentry.models.useremail import UserEmail
2322
from sentry.silo.base import SiloMode
2423
from sentry.testutils.cases import SnubaTestCase, TestCase
2524
from sentry.testutils.helpers.datetime import before_now, iso_format
2625
from sentry.testutils.silo import assume_test_silo_mode
2726
from sentry.users.models.user import User
27+
from sentry.users.models.useremail import UserEmail
2828

2929

3030
class ReleaseSerializerTest(TestCase, SnubaTestCase):

tests/sentry/api/serializers/test_user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
from sentry.models.authidentity import AuthIdentity
55
from sentry.models.authprovider import AuthProvider
66
from sentry.models.avatars.user_avatar import UserAvatar
7-
from sentry.models.useremail import UserEmail
87
from sentry.models.userpermission import UserPermission
98
from sentry.testutils.cases import TestCase
109
from sentry.testutils.silo import control_silo_test
1110
from sentry.users.models.authenticator import Authenticator
11+
from sentry.users.models.useremail import UserEmail
1212

1313

1414
@control_silo_test

0 commit comments

Comments
 (0)