from django.db import migrations
import random
import string


def populate_order_codes(apps, schema_editor):
    Order = apps.get_model('orders', 'Order')
    prefix = 'ORD-'
    existing = set(Order.objects.exclude(order_code__isnull=True).values_list('order_code', flat=True))
    for order in Order.objects.filter(order_code__isnull=True):
        for _ in range(100):
            code = prefix + ''.join(random.choices(string.digits, k=6))
            if code not in existing and not Order.objects.filter(order_code=code).exists():
                order.order_code = code
                order.save(update_fields=['order_code'])
                existing.add(code)
                break


class Migration(migrations.Migration):
    dependencies = [
        ('orders', '0003_order_order_code_and_more'),
    ]

    operations = [
        migrations.RunPython(populate_order_codes, migrations.RunPython.noop),
    ]
