From 21c99f73c368dd8f6fc21b1c550a9073f963f160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Fri, 29 Nov 2024 23:16:31 +0100 Subject: [PATCH] Implement Book data migration --- .../0016_basebook_book_catalogue.py | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/ram/bookshelf/migrations/0016_basebook_book_catalogue.py b/ram/bookshelf/migrations/0016_basebook_book_catalogue.py index fc0d8c1..0be21a2 100644 --- a/ram/bookshelf/migrations/0016_basebook_book_catalogue.py +++ b/ram/bookshelf/migrations/0016_basebook_book_catalogue.py @@ -4,8 +4,16 @@ import django.db.models.deletion from django.db import migrations, models -def nil(apps, schema_editor): - pass +def basebook_to_book(apps, schema_editor): + basebook = apps.get_model("bookshelf", "BaseBook") + book = apps.get_model("bookshelf", "Book") + for row in basebook.objects.all(): + b = book.objects.create( + basebook_ptr=row, + title=row.old_title, + publisher=row.old_publisher, + ) + b.authors.set(row.old_authors.all()) class Migration(migrations.Migration): @@ -16,6 +24,10 @@ class Migration(migrations.Migration): ] operations = [ + migrations.AlterModelOptions( + name="Book", + options={"ordering": ["creation_time"]}, + ), migrations.RenameModel( old_name="BookImage", new_name="BaseBookImage", @@ -43,6 +55,10 @@ class Migration(migrations.Migration): old_name="publisher", new_name="old_publisher", ), + migrations.AlterModelOptions( + name="basebookimage", + options={"ordering": ["order"], "verbose_name_plural": "Images"}, + ), migrations.CreateModel( name="Book", fields=[ @@ -76,7 +92,22 @@ class Migration(migrations.Migration): options={ "ordering": ["title"], }, - bases=("bookshelf.basebook",), + ), + migrations.RunPython( + basebook_to_book, + reverse_code=migrations.RunPython.noop + ), + migrations.RemoveField( + model_name="basebook", + name="old_title", + ), + migrations.RemoveField( + model_name="basebook", + name="old_authors", + ), + migrations.RemoveField( + model_name="basebook", + name="old_publisher", ), migrations.CreateModel( name="Catalog", @@ -109,20 +140,4 @@ class Migration(migrations.Migration): }, bases=("bookshelf.basebook",), ), - migrations.RunPython( - nil, - reverse_code=migrations.RunPython.noop - ), - migrations.RemoveField( - model_name="basebook", - name="old_title", - ), - migrations.RemoveField( - model_name="basebook", - name="old_authors", - ), - migrations.RemoveField( - model_name="basebook", - name="old_publisher", - ), ]