78 lines
3 KiB
Python
78 lines
3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Generated by Django 1.10.2 on 2016-12-20 08:10
|
|
from __future__ import unicode_literals
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
|
UNIQUE_SLUG_MODELS = ['Continent', 'Country', 'Region', 'Subregion', 'District',
|
|
'City', 'PostalCode', 'AlternativeName']
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('geo', '0009_add_slug_fields_to_models'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AlterField(
|
|
model_name='country',
|
|
name='code',
|
|
field=models.CharField(db_index=True, max_length=2, unique=True),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='country',
|
|
name='code3',
|
|
field=models.CharField(db_index=True, max_length=3, unique=True),
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='city',
|
|
unique_together=set([('country', 'region', 'subregion', 'id', 'name')]),
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='district',
|
|
unique_together=set([('city', 'name')]),
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='postalcode',
|
|
unique_together=set([
|
|
('country', 'region_name', 'subregion_name', 'district_name', 'name', 'id', 'code'),
|
|
('country', 'region', 'subregion', 'city', 'district', 'name', 'id', 'code'),
|
|
]),
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='region',
|
|
unique_together=set([('country', 'name')]),
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='subregion',
|
|
unique_together=set([('region', 'id', 'name')]),
|
|
),
|
|
]
|
|
|
|
# The previous migration created the slug field as
|
|
#
|
|
# CharField(max_length=255, unique=True)
|
|
#
|
|
# but I removed the unique=True for new users. This checks the previous
|
|
# state of the slug field on the models, and if the field has unique=True
|
|
# (eg: existing users), it removes the unique attribute. For slug fields
|
|
# that don't have unique=True (eg: new users), it skips them.
|
|
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
|
# Before we do any database operations, add the appropriate slug field
|
|
# modifications to the migration operations.
|
|
self.operations + [
|
|
migrations.AlterField(
|
|
model_name=model_name.lower(),
|
|
name='slug',
|
|
field=models.CharField(max_length=255))
|
|
for model_name in UNIQUE_SLUG_MODELS
|
|
# This is the check that matters. It checks the result of the
|
|
# previous 0009 migration (which may or may not have unique=True
|
|
# set on slug fields) for the unique attribute, and skips it if
|
|
# they don't.
|
|
if from_state.apps.get_model(app_label, self.model_name)._meta.get_field('slug').unique
|
|
]
|
|
|
|
super(Migration, self).database_forwards(app_label, schema_editor, from_state, to_state)
|