# -*- coding: utf-8 -*- # Generated by Django 1.9.2 on 2016-03-29 19:49 from __future__ import unicode_literals import django.contrib.gis.db.models.fields from django.db import migrations, models import django.db.models.deletion import swapper from ..util import add_continents as util_add_continents def get_model(apps, name): model_tuple = swapper.split(swapper.get_model_name('geo', name)) return apps.get_model(*model_tuple) def add_continents(apps, schema_editor): util_add_continents(get_model(apps, 'Continent')) def rm_continents(apps, schema_editor): # The table is going to be nuked anyway, we just don't want RunPython() # to throw an exception on backwards migrations pass def add_continent_fks(apps, schema_editor): Country = get_model(apps, 'Country') Continent = get_model(apps, 'Continent') for continent in Continent.objects.all(): Country.objects.filter(continent_code=continent.code).update(continent=continent) def rm_continent_fks(apps, schema_editor): Country = get_model(apps, 'Country') Continent = get_model(apps, 'Continent') for continent in Continent.objects.all(): Country.objects.filter(continent=continent).update(continent_code=continent.code) class Migration(migrations.Migration): dependencies = [ ('geo', '0001_initial'), swapper.dependency('geo', 'Country'), ] operations = [ migrations.CreateModel( name='Continent', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(db_index=True, max_length=200, verbose_name='ascii name')), ('slug', models.CharField(max_length=200, unique=True)), ('code', models.CharField(db_index=True, max_length=2, unique=True)), ], options={ 'abstract': False, 'swappable': swapper.swappable_setting('geo', 'Continent'), }, ), migrations.AddField( model_name='continent', name='alt_names', field=models.ManyToManyField(related_name='geo_continents', to='geo.AlternativeName'), ), migrations.RenameField( model_name='country', old_name='continent', new_name='continent_code', ), migrations.AddField( model_name='country', name='continent', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='countries', to=swapper.get_model_name('geo', 'Continent')), ), migrations.RunPython(add_continents, rm_continents), migrations.RunPython(add_continent_fks, rm_continent_fks), migrations.RemoveField( model_name='country', name='continent_code', ), ]