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.
 
 
 
 
 
 

57 lines
1.8 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
),
]