from django.db import migrations, models
from django.forms import modelform_factory


class Migration(migrations.Migration):
    def migrate(apps, schema_editor):
        Sex = apps.get_model('species', 'Sex')
        SexForm = modelform_factory(Sex, fields=('name', 'sort_order'))
        for i, s in enumerate(['male', 'female', 'mixed', 'unknown']):
            form = SexForm(dict(name=s, sort_order=i))
            if form.is_valid():
                form.save()
            else:
                print('sex', form.errors.as_data())

    def rollback(apps, schema_editor):
        Sex = apps.get_model('species', 'Sex')
        Sex.objects.all().delete()

    dependencies = [
        ('species', '0003_DATA_reset_sequences'),
    ]

    operations = [
        migrations.CreateModel(
            name='Sex',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True,
                                        serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=25, unique=True)),
                ('sort_order', models.IntegerField(blank=True, null=True)),
            ],
            options={
                'verbose_name_plural': 'sex',
                'ordering': ['sort_order'],
            },
        ),
        migrations.RunPython(migrate, rollback),
    ]