migrations: Fix performance of migration 0436.

This was doing bulk_create in a loop for each realm, which is too slow
on very large servers. Just do a single bulk_create with a reasonable
batch_size at the end.
This commit is contained in:
Mateusz Mandera 2023-05-03 12:55:11 +02:00 committed by Tim Abbott
parent 18d8fbc74b
commit d0e9a77a57
1 changed files with 3 additions and 2 deletions

View File

@ -11,12 +11,13 @@ def fill_RealmAuthenticationMethod_data(
) -> None:
Realm = apps.get_model("zerver", "Realm")
RealmAuthenticationMethod = apps.get_model("zerver", "RealmAuthenticationMethod")
for realm in Realm.objects.order_by("id"):
rows_to_create = []
for realm in Realm.objects.order_by("id"):
for key, value in realm.authentication_methods.iteritems():
if value:
rows_to_create.append(RealmAuthenticationMethod(name=key, realm_id=realm.id))
RealmAuthenticationMethod.objects.bulk_create(rows_to_create)
RealmAuthenticationMethod.objects.bulk_create(rows_to_create, batch_size=10000)
class Migration(migrations.Migration):