Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
<!-- Describe your PR here. -->
  • Loading branch information
asottile-sentry committed Jul 3, 2024
1 parent 64152e9 commit 745d44e
Show file tree
Hide file tree
Showing 15 changed files with 30 additions and 22 deletions.
2 changes: 1 addition & 1 deletion requirements-dev-frozen.txt
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ selenium==4.16.0
sentry-arroyo==2.16.5
sentry-cli==2.16.0
sentry-devenv==1.6.2
sentry-forked-django-stubs==5.0.2.post4
sentry-forked-django-stubs==5.0.2.post5
sentry-forked-djangorestframework-stubs==3.15.0.post1
sentry-kafka-schemas==0.1.101
sentry-ophio==0.2.7
Expand Down
2 changes: 1 addition & 1 deletion requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ pip-tools>=7.1.0
packaging>=21.3

# for type checking
sentry-forked-django-stubs>=5.0.2.post4
sentry-forked-django-stubs>=5.0.2.post5
sentry-forked-djangorestframework-stubs>=3.15.0.post1
lxml-stubs
msgpack-types>=0.2.0
Expand Down
4 changes: 2 additions & 2 deletions src/sentry/audit_log/services/log/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def record_audit_log(self, *, event: AuditLogEvent) -> None:
category=OutboxCategory.AUDIT_LOG_EVENT,
object_identifier=RegionOutbox.next_object_identifier(),
payload=event.__dict__,
) # type: ignore[misc]
)
outbox.save()

def record_user_ip(self, *, event: UserIpEvent) -> None:
Expand All @@ -91,7 +91,7 @@ def record_user_ip(self, *, event: UserIpEvent) -> None:
category=OutboxCategory.USER_IP_EVENT,
object_identifier=event.user_id,
payload=event.__dict__,
) # type: ignore[misc]
)
outbox.save()

def find_last_log(
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/auth/services/orgauthtoken/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,5 @@ def update_orgauthtoken(
"org_auth_token_id": org_auth_token_id,
"date_last_used": date_last_used,
"project_last_used_id": project_last_used_id,
}, # type: ignore[misc]
},
).save()
4 changes: 2 additions & 2 deletions src/sentry/db/models/outboxes.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ class ReplicatedRegionModel(RegionOutboxProducingModel):
class Meta:
abstract = True

def payload_for_update(self) -> Mapping[str, Any] | None:
def payload_for_update(self) -> dict[str, Any] | None:
"""
A custom json payload to be included in outboxes generated via creation, update, or deletion.
Note that outboxes are COALESCED! This means that when multiple updates are processed at once,
Expand Down Expand Up @@ -358,7 +358,7 @@ def outbox_region_names(self) -> Collection[str]:
# joins a new organization after the last outbox was processed is a special case that requires special handling.
raise NotImplementedError

def payload_for_update(self) -> Mapping[str, Any] | None:
def payload_for_update(self) -> dict[str, Any] | None:
"""
A custom json payload to be included in outboxes generated via creation, update, or deletion.
Note that outboxes are COALESCED! This means that when multiple updates are processed at once,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def create_post_provision_outbox(
shard_identifier=org_id,
category=OutboxCategory.POST_ORGANIZATION_PROVISION,
object_identifier=org_id,
payload=provisioning_options.post_provision_options.json(),
payload=provisioning_options.post_provision_options.dict(),
)


Expand All @@ -50,7 +50,7 @@ def create_organization_provisioning_outbox(
region_name: str,
org_provision_payload: OrganizationProvisioningOptions | None,
) -> ControlOutbox:
payload = org_provision_payload.json() if org_provision_payload is not None else None
payload = org_provision_payload.dict() if org_provision_payload is not None else None
return ControlOutbox(
region_name=region_name,
shard_scope=OutboxScope.PROVISION_SCOPE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def create_post_provision_outbox(
shard_identifier=org_id,
category=OutboxCategory.POST_ORGANIZATION_PROVISION,
object_identifier=org_id,
payload=provisioning_options.post_provision_options.json(),
payload=provisioning_options.post_provision_options.dict(),
)


Expand Down
4 changes: 2 additions & 2 deletions src/sentry/hybridcloud/services/replica/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ def upsert_replicated_auth_provider(
auth_provider_id=auth_provider.id,
provider=auth_provider.provider,
organization_id=organization.id,
config=auth_provider.config, # type: ignore[misc]
config=auth_provider.config,
default_role=auth_provider.default_role,
default_global_access=auth_provider.default_global_access,
allow_unlinked=auth_provider.flags.allow_unlinked,
Expand All @@ -213,7 +213,7 @@ def upsert_replicated_auth_identity(
user_id=auth_identity.user_id,
auth_provider_id=auth_identity.auth_provider_id,
ident=auth_identity.ident,
data=auth_identity.data, # type: ignore[misc]
data=auth_identity.data,
last_verified=auth_identity.last_verified,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@

def validate_payload(outbox: ControlOutbox) -> bool:
payload = outbox.payload
body: str = payload.get("body", None)
if not payload or not body:
if not payload:
return False
body = payload.get("body", None)
if not body:
return False

headers = payload.get("headers", None)
Expand Down
6 changes: 5 additions & 1 deletion src/sentry/models/authidentityreplica.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
from __future__ import annotations

from typing import Any

from django.db import models
from django.utils import timezone

Expand All @@ -17,7 +21,7 @@ class AuthIdentityReplica(Model):
user_id = HybridCloudForeignKey("sentry.User", on_delete="CASCADE")
auth_provider_id = HybridCloudForeignKey("sentry.AuthProvider", on_delete="CASCADE")
ident = models.CharField(max_length=128)
data = JSONField()
data: models.Field[dict[str, Any], dict[str, Any]] = JSONField()
last_verified = models.DateTimeField(default=timezone.now)

# This represents the time at which this model was created, NOT the date_added of the original auth identity
Expand Down
4 changes: 3 additions & 1 deletion src/sentry/models/authproviderreplica.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import annotations

from typing import Any

from django.db import models
from django.utils import timezone

Expand All @@ -24,7 +26,7 @@ class AuthProviderReplica(Model):
)
organization = FlexibleForeignKey("sentry.Organization", on_delete=models.CASCADE, unique=True)
provider = models.CharField(max_length=128)
config = JSONField()
config: models.Field[dict[str, Any], dict[str, Any]] = JSONField()

default_role = BoundedPositiveIntegerField(default=50)
default_global_access = models.BooleanField(default=True)
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/models/integrations/sentry_app_installation.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ def handle_async_deletion(
for ob in ApiToken(id=api_token_id, user_id=user_id).outboxes_for_update():
ob.save()

def payload_for_update(self) -> Mapping[str, Any] | None:
def payload_for_update(self) -> dict[str, Any] | None:
from sentry.models.apitoken import ApiToken

try:
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/models/organizationmember.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ def regenerate_token(self):
self.token = self.generate_token()
self.refresh_expires_at()

def payload_for_update(self) -> Mapping[str, Any] | None:
def payload_for_update(self) -> dict[str, Any] | None:
return dict(user_id=self.user_id)

def refresh_expires_at(self):
Expand Down
6 changes: 3 additions & 3 deletions src/sentry/models/outbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ def get_scope(self) -> OutboxScope:
def as_region_outbox(
self,
model: Any | None = None,
payload: Any | None = None,
payload: dict[str, Any] | None = None,
shard_identifier: int | None = None,
object_identifier: int | None = None,
outbox: type[RegionOutboxBase] | None = None,
Expand All @@ -188,7 +188,7 @@ def as_control_outboxes(
self,
region_names: Collection[str],
model: Any | None = None,
payload: Any | None = None,
payload: dict[str, Any] | None = None,
shard_identifier: int | None = None,
object_identifier: int | None = None,
outbox: type[ControlOutboxBase] | None = None,
Expand Down Expand Up @@ -504,7 +504,7 @@ class Meta:
object_identifier = BoundedBigIntegerField(null=False)

# payload is used for webhook payloads.
payload: models.Field[dict[str, Any], dict[str, Any]] = JSONField(null=True)
payload: models.Field[dict[str, Any] | None, dict[str, Any] | None] = JSONField(null=True)

# The point at which this object was scheduled, used as a diff from scheduled_for to determine the intended delay.
scheduled_from = models.DateTimeField(null=False, default=timezone.now)
Expand Down
2 changes: 1 addition & 1 deletion tests/sentry/models/test_outbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@ def setUp(self):
shard_identifier=shard_id,
category=OutboxCategory.WEBHOOK_PROXY,
object_identifier=shard_id * 10000 + i,
payload='{"foo": "bar"}',
payload={"foo": "bar"},
).save()

def test_calculate_sharding_depths(self):
Expand Down

0 comments on commit 745d44e

Please sign in to comment.