You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

54 lines
1.7 KiB

from django.db import migrations
def copy_label_to_subclass(apps, schema_editor):
Label = apps.get_model("api", "Label")
for label in Label.objects.all():
project_type = label.project.project_type
if project_type.endswith("Classification"):
model = apps.get_model("api", "CategoryType")
else:
model = apps.get_model("api", "SpanType")
model.objects.create(
id=label.id,
text=label.text,
prefix_key=label.prefix_key,
suffix_key=label.suffix_key,
project=label.project,
background_color=label.background_color,
text_color=label.text_color,
created_at=label.created_at,
updated_at=label.updated_at,
)
def delete_subclass_object(apps, schema_editor):
CategoryType = apps.get_model("api", "CategoryType")
SpanType = apps.get_model("api", "SpanType")
Label = apps.get_model("api", "Label")
for model in [CategoryType, SpanType]:
for label in model.objects.all():
old_label = Label(
id=label.id,
text=label.text,
prefix_key=label.prefix_key,
suffix_key=label.suffix_key,
project=label.project,
background_color=label.background_color,
text_color=label.text_color,
created_at=label.created_at,
updated_at=label.updated_at,
)
label.delete()
old_label.save()
class Migration(migrations.Migration):
dependencies = [
("api", "0020_auto_20211221_1415"),
]
operations = [
migrations.RunPython(code=copy_label_to_subclass, reverse_code=delete_subclass_object),
]