26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
from django.db import migrations
|
|
|
|
|
|
def backfill_customer_profiles(apps, schema_editor):
|
|
User = apps.get_model("accounts", "User")
|
|
CustomerProfile = apps.get_model("customers", "CustomerProfile")
|
|
database = schema_editor.connection.alias
|
|
missing_users = (
|
|
User.objects.using(database)
|
|
.filter(account_type="CUSTOMER", customer_profile__isnull=True)
|
|
.values("pk", "first_name", "last_name")
|
|
)
|
|
batch = []
|
|
for user in missing_users.iterator(chunk_size=500):
|
|
batch.append(CustomerProfile(user_id=user["pk"], first_name=user["first_name"][:100], last_name=user["last_name"][:100]))
|
|
if len(batch) == 500:
|
|
CustomerProfile.objects.using(database).bulk_create(batch, ignore_conflicts=True, batch_size=500)
|
|
batch.clear()
|
|
if batch:
|
|
CustomerProfile.objects.using(database).bulk_create(batch, ignore_conflicts=True, batch_size=500)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [("customers", "0005_contacteditlog")]
|
|
operations = [migrations.RunPython(backfill_customer_profiles, migrations.RunPython.noop)]
|