from django.db import migrations, models


def backfill_experience_years(apps, schema_editor):
    Job = apps.get_model('jobs', 'Job')
    from jobs.experience_utils import format_experience_display, years_from_level

    for job in Job.objects.all().iterator():
        if job.experience_years_min is not None and job.experience_years_max is not None:
            continue
        min_years, max_years = years_from_level(job.experience_level or 'mid')
        job.experience_years_min = min_years
        job.experience_years_max = max_years
        if not job.experience_required:
            job.experience_required = format_experience_display(min_years, max_years)
        job.save(
            update_fields=['experience_years_min', 'experience_years_max', 'experience_required']
        )


class Migration(migrations.Migration):

    dependencies = [
        ('jobs', '0015_job_structured_location'),
    ]

    operations = [
        migrations.AddField(
            model_name='job',
            name='experience_years_max',
            field=models.PositiveSmallIntegerField(
                blank=True,
                help_text='Maximum years of experience required.',
                null=True,
            ),
        ),
        migrations.AddField(
            model_name='job',
            name='experience_years_min',
            field=models.PositiveSmallIntegerField(
                blank=True,
                help_text='Minimum years of experience required.',
                null=True,
            ),
        ),
        migrations.RunPython(backfill_experience_years, migrations.RunPython.noop),
    ]
