from decimal import Decimal

from django.db import migrations, models


def backfill_trip_agreed_price(apps, schema_editor):
    Trip = apps.get_model('core', 'Trip')
    for trip in Trip.objects.select_related('accepted_bid').iterator():
        bid = trip.accepted_bid
        if bid is None:
            continue
        if bid.counter_amount is not None:
            amount = bid.counter_amount
        else:
            amount = bid.amount
        if amount is not None:
            Trip.objects.filter(pk=trip.pk).update(agreed_price=amount)


class Migration(migrations.Migration):

    dependencies = [
        ('core', '0035_raterequest'),
    ]

    operations = [
        migrations.AddField(
            model_name='trip',
            name='agreed_price',
            field=models.DecimalField(
                blank=True,
                decimal_places=2,
                help_text='Final negotiated price when the bid was accepted.',
                max_digits=12,
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name='bid',
            name='status',
            field=models.CharField(
                choices=[
                    ('PENDING', 'Pending'),
                    ('AGREED', 'Agreed'),
                    ('ACCEPTED', 'Accepted'),
                    ('REJECTED', 'Rejected'),
                    ('COUNTERED', 'Countered'),
                ],
                default='PENDING',
                max_length=20,
            ),
        ),
        migrations.RunPython(backfill_trip_agreed_price, migrations.RunPython.noop),
    ]
