diff --git a/polylan_submitter/opus_magnum/migrations/0001_initial.py b/polylan_submitter/opus_magnum/migrations/0001_initial.py index b725a71..4d462a2 100644 --- a/polylan_submitter/opus_magnum/migrations/0001_initial.py +++ b/polylan_submitter/opus_magnum/migrations/0001_initial.py @@ -205,7 +205,7 @@ class Migration(migrations.Migration): models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="items", - to="submissions.steamcollection", + to="opus_magnum.steamcollection", ), ), ], diff --git a/polylan_submitter/opus_magnum/migrations/0004_submission_puzzleresponse_submissionfile.py b/polylan_submitter/opus_magnum/migrations/0004_submission_puzzleresponse_submissionfile.py index 27bdb74..9d0a0a5 100644 --- a/polylan_submitter/opus_magnum/migrations/0004_submission_puzzleresponse_submissionfile.py +++ b/polylan_submitter/opus_magnum/migrations/0004_submission_puzzleresponse_submissionfile.py @@ -160,7 +160,7 @@ class Migration(migrations.Migration): help_text="The puzzle this response is for", on_delete=django.db.models.deletion.CASCADE, related_name="responses", - to="submissions.steamcollectionitem", + to="opus_magnum.steamcollectionitem", ), ), ( @@ -168,7 +168,7 @@ class Migration(migrations.Migration): models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="responses", - to="submissions.submission", + to="opus_magnum.submission", ), ), ], @@ -239,7 +239,7 @@ class Migration(migrations.Migration): models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="files", - to="submissions.puzzleresponse", + to="opus_magnum.puzzleresponse", ), ), ], diff --git a/polylan_submitter/opus_magnum/migrations/0015_migrate_data_from_submissions.py b/polylan_submitter/opus_magnum/migrations/0015_migrate_data_from_submissions.py new file mode 100644 index 0000000..f90c4e0 --- /dev/null +++ b/polylan_submitter/opus_magnum/migrations/0015_migrate_data_from_submissions.py @@ -0,0 +1,67 @@ +# Data migration: Copy all data from submissions app tables to opus_magnum app tables + +from django.db import migrations + + +def migrate_data_forward(apps, schema_editor): + """Copy data from submissions_* tables to opus_magnum_* tables""" + # Use raw SQL to copy data while preserving all fields + with schema_editor.connection.cursor() as cursor: + # Copy SteamAPIKey + cursor.execute(""" + INSERT INTO opus_magnum_steamapikey + SELECT * FROM submissions_steamapikey + """) + + # Copy SteamCollection + cursor.execute(""" + INSERT INTO opus_magnum_steamcollection + SELECT * FROM submissions_steamcollection + """) + + # Copy SteamCollectionItem + cursor.execute(""" + INSERT INTO opus_magnum_steamcollectionitem + SELECT * FROM submissions_steamcollectionitem + """) + + # Copy Submission + cursor.execute(""" + INSERT INTO opus_magnum_submission + SELECT * FROM submissions_submission + """) + + # Copy PuzzleResponse + cursor.execute(""" + INSERT INTO opus_magnum_puzzleresponse + SELECT * FROM submissions_puzzleresponse + """) + + # Copy SubmissionFile + cursor.execute(""" + INSERT INTO opus_magnum_submissionfile + SELECT * FROM submissions_submissionfile + """) + + +def migrate_data_backward(apps, schema_editor): + """Delete all data from opus_magnum_* tables""" + with schema_editor.connection.cursor() as cursor: + # Delete in reverse order of foreign key dependencies + cursor.execute("DELETE FROM opus_magnum_submissionfile") + cursor.execute("DELETE FROM opus_magnum_puzzleresponse") + cursor.execute("DELETE FROM opus_magnum_submission") + cursor.execute("DELETE FROM opus_magnum_steamcollectionitem") + cursor.execute("DELETE FROM opus_magnum_steamcollection") + cursor.execute("DELETE FROM opus_magnum_steamapikey") + + +class Migration(migrations.Migration): + + dependencies = [ + ('opus_magnum', '0014_steamcollection_accepting_submissions'), + ] + + operations = [ + migrations.RunPython(migrate_data_forward, migrate_data_backward), + ]