from decimal import Decimal

from django.db import migrations, models


def copy_code_to_rate(apps, schema_editor):
    Zone = apps.get_model('core', 'Zone')
    for zone in Zone.objects.all():
        try:
            zone.rate_per_km = Decimal(str(zone.code).strip())
        except Exception:
            zone.rate_per_km = Decimal('0')
        zone.save(update_fields=['rate_per_km'])


class Migration(migrations.Migration):

    dependencies = [
        ('core', '0012_zone_location_fields'),
    ]

    operations = [
        migrations.AddField(
            model_name='zone',
            name='rate_per_km',
            field=models.DecimalField(
                decimal_places=2,
                default=Decimal('0'),
                help_text='Pricing rate per kilometre for this zone.',
                max_digits=10,
            ),
            preserve_default=False,
        ),
        migrations.RunPython(copy_code_to_rate, migrations.RunPython.noop),
        migrations.RemoveField(
            model_name='zone',
            name='code',
        ),
    ]
