Source code for tcms.testcases.migrations.0010_remove_bug

import json

from django.conf import settings
from django.db import migrations
from django.forms.models import model_to_dict


[docs] def forward_copy_data(apps, schema_editor): bug_model = apps.get_model("testcases", "Bug") link_reference_model = apps.get_model("linkreference", "LinkReference") link_reference_ids = [] for bug in bug_model.objects.all(): bug_file_name = f"kiwitcms-testcases-migrations-0010-Bug-{bug.pk}" bug_file = settings.TEMP_DIR / bug_file_name with bug_file.open("w") as outfile: json.dump(model_to_dict(bug), outfile) if not bug.case_run_id: continue link_reference = link_reference_model.objects.create( execution_id=bug.case_run_id, name=f"{bug.bug_system.name} {bug.bug_id}", url=bug.bug_system.url_reg_exp % bug.bug_id, is_defect=True, ) link_reference_ids.append(link_reference.pk) link_reference_ids_file_name = ( "kiwitcms-testcases-migrations-0010-new-LinkReference-IDs" ) link_reference_ids_file = settings.TEMP_DIR / link_reference_ids_file_name with link_reference_ids_file.open("w") as outfile: json.dump(link_reference_ids, outfile)
[docs] def backward_restore_data(apps, schema_editor): bug_model = apps.get_model("testcases", "Bug") link_reference_model = apps.get_model("linkreference", "LinkReference") for file in settings.TEMP_DIR.glob("kiwitcms-testcases-migrations-0010-Bug-*"): with file.open("r") as infile: data = json.load(infile) bug = bug_model(**data) bug.save() link_reference_ids_file_name = ( "kiwitcms-testcases-migrations-0010-new-LinkReference-IDs" ) link_reference_ids_file = settings.TEMP_DIR / link_reference_ids_file_name with link_reference_ids_file.open("r") as infile: link_reference_ids = json.load(infile) link_reference_model.objects.filter(pk__in=link_reference_ids).delete()
[docs] class Migration(migrations.Migration): dependencies = [ ("testcases", "0009_populate_missing_text_history"), ("linkreference", "0002_update_fields"), ] operations = [ # copy the data from the related model migrations.RunPython(forward_copy_data, backward_restore_data), migrations.DeleteModel( name="Bug", ), ]