# Generated by Django 2.2.10 on 2020-12-02 13:31 from django.core.exceptions import ObjectDoesNotExist from django.db import migrations, models import django.db.models.deletion import django_countries.fields def migrate_forward(apps, schema_editor): Person = apps.get_model('people', 'Person') PersonAnswerset = apps.get_model('people', 'PersonAnswerSet') fields = { 'country_of_residence', 'disciplines', 'job_title', 'nationality', 'organisation', 'organisation_started_date', 'themes', } for person in Person.objects.all(): try: answer_set = person.answer_sets.last() except ObjectDoesNotExist: answer_set = person.answer_sets.create() for field in fields: value = getattr(person, field) try: setattr(answer_set, field, value) except TypeError: # Cannot directly set an m2m field m2m = getattr(answer_set, field) m2m.set(value.all()) answer_set.save() def migrate_backward(apps, schema_editor): Person = apps.get_model('people', 'Person') PersonAnswerset = apps.get_model('people', 'PersonAnswerSet') fields = { 'country_of_residence', 'disciplines', 'job_title', 'nationality', 'organisation', 'organisation_started_date', 'themes', } for person in Person.objects.all(): try: answer_set = person.answer_sets.last() for field in fields: value = getattr(answer_set, field) try: setattr(person, field, value) except TypeError: # Cannot directly set an m2m field m2m = getattr(person, field) m2m.set(value.all()) person.save() except ObjectDoesNotExist: pass class Migration(migrations.Migration): dependencies = [ ('people', '0025_rename_relationship_target'), ] operations = [ migrations.AddField( model_name='personanswerset', name='country_of_residence', field=django_countries.fields.CountryField(blank=True, max_length=2, null=True), ), migrations.AddField( model_name='personanswerset', name='disciplines', field=models.CharField(blank=True, max_length=255, null=True), ), migrations.AddField( model_name='personanswerset', name='job_title', field=models.CharField(blank=True, max_length=255), ), migrations.AddField( model_name='personanswerset', name='nationality', field=django_countries.fields.CountryField(blank=True, max_length=2, null=True), ), migrations.AddField( model_name='personanswerset', name='organisation', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='members', to='people.Organisation'), ), migrations.AddField( model_name='personanswerset', name='organisation_started_date', field=models.DateField(null=True, verbose_name='Date started at this organisation'), ), migrations.AddField( model_name='personanswerset', name='themes', field=models.ManyToManyField(blank=True, related_name='people', to='people.Theme'), ), migrations.RunPython(migrate_forward, migrate_backward), migrations.RemoveField( model_name='person', name='country_of_residence', ), migrations.RemoveField( model_name='person', name='disciplines', ), migrations.RemoveField( model_name='person', name='job_title', ), migrations.RemoveField( model_name='person', name='nationality', ), migrations.RemoveField( model_name='person', name='organisation', ), migrations.RemoveField( model_name='person', name='organisation_started_date', ), migrations.RemoveField( model_name='person', name='themes', ), ]