diff --git a/zerver/migrations/0376_set_realmemoji_author_and_reupload_realmemoji.py b/zerver/migrations/0376_set_realmemoji_author_and_reupload_realmemoji.py index 63f86a70d5..10a8657cba 100644 --- a/zerver/migrations/0376_set_realmemoji_author_and_reupload_realmemoji.py +++ b/zerver/migrations/0376_set_realmemoji_author_and_reupload_realmemoji.py @@ -1,6 +1,7 @@ from django.db import migrations from django.db.backends.postgresql.schema import DatabaseSchemaEditor from django.db.migrations.state import StateApps +from django.db.models import OuterRef, Subquery def set_emoji_author(apps: StateApps, schema_editor: DatabaseSchemaEditor) -> None: @@ -13,20 +14,15 @@ def set_emoji_author(apps: StateApps, schema_editor: DatabaseSchemaEditor) -> No UserProfile = apps.get_model("zerver", "UserProfile") ROLE_REALM_OWNER = 100 - realm_emoji_to_update = [] - for realm_emoji in RealmEmoji.objects.all(): - if realm_emoji.author_id is None: - user_profile = ( - UserProfile.objects.filter( - realm_id=realm_emoji.realm_id, is_active=True, role=ROLE_REALM_OWNER - ) - .order_by("id") - .first() + RealmEmoji.objects.filter(author=None).update( + author=Subquery( + UserProfile.objects.filter( + realm=OuterRef("realm"), is_active=True, role=ROLE_REALM_OWNER ) - realm_emoji.author_id = user_profile.id - realm_emoji_to_update.append(realm_emoji) - - RealmEmoji.objects.bulk_update(realm_emoji_to_update, ["author_id"]) + .order_by("id")[:1] + .values("pk") + ) + ) # Previously, this also pushed `reupload_realm_emoji` events onto # the `deferred_work` queue; however,