# -*- coding: utf-8 -*- from __future__ import unicode_literals import uuid from django.db import migrations, models import django.db.models.deletion def create_default_label(apps, schema_editor): LabelStyle = apps.get_model("storage", "LabelStyle") LabelStyle.objects.create( old_name="basic_99012_v1", description="Basic Dymo 89x36mm label", length=89, width=36, ) def fix_label_styles(apps, schema_editor): Label = apps.get_model("storage", "Label") LabelStyle = apps.get_model("storage", "LabelStyle") style = LabelStyle.objects.get(old_name="basic_99012_v1") for label in Label.objects.all(): if label.style == "basic_99012_v1": label.style = style.uuid label.save() class Migration(migrations.Migration): dependencies = [ ("storage", "0006_category_icon_id"), ] operations = [ # First set length to 36, to accomodate for UUIDs migrations.AlterField( model_name="label", name="style", field=models.CharField(max_length=36), ), migrations.CreateModel( name="LabelStyle", fields=[ ( "uuid", models.UUIDField( primary_key=True, default=uuid.uuid4, editable=False, serialize=False, ), ), ("old_name", models.CharField(max_length=64)), ("description", models.CharField(max_length=64)), ("length", models.PositiveIntegerField()), ("width", models.PositiveIntegerField()), ], ), # Create default label, equivalent to old basic_99012_v1 style migrations.RunPython(create_default_label), migrations.RunPython(fix_label_styles), migrations.AlterField( model_name="label", name="style", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="storage.LabelStyle" ), ), ]