Implement Book data migration

This commit is contained in:
2024-11-29 23:16:31 +01:00
parent b5b88f7714
commit 21c99f73c3

View File

@@ -4,8 +4,16 @@ import django.db.models.deletion
from django.db import migrations, models from django.db import migrations, models
def nil(apps, schema_editor): def basebook_to_book(apps, schema_editor):
pass 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): class Migration(migrations.Migration):
@@ -16,6 +24,10 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
migrations.AlterModelOptions(
name="Book",
options={"ordering": ["creation_time"]},
),
migrations.RenameModel( migrations.RenameModel(
old_name="BookImage", old_name="BookImage",
new_name="BaseBookImage", new_name="BaseBookImage",
@@ -43,6 +55,10 @@ class Migration(migrations.Migration):
old_name="publisher", old_name="publisher",
new_name="old_publisher", new_name="old_publisher",
), ),
migrations.AlterModelOptions(
name="basebookimage",
options={"ordering": ["order"], "verbose_name_plural": "Images"},
),
migrations.CreateModel( migrations.CreateModel(
name="Book", name="Book",
fields=[ fields=[
@@ -76,7 +92,22 @@ class Migration(migrations.Migration):
options={ options={
"ordering": ["title"], "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( migrations.CreateModel(
name="Catalog", name="Catalog",
@@ -109,20 +140,4 @@ class Migration(migrations.Migration):
}, },
bases=("bookshelf.basebook",), 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",
),
] ]