Files
customerTicket/apps/customers/migrations/0006_backfill_customer_profiles.py
T
2026-09-29 10:30:54 +03:30

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)]