diff --git a/ram/bookshelf/migrations/0016_basebook_book_catalogue.py b/ram/bookshelf/migrations/0016_basebook_book_catalogue.py index 4a1072b..e465782 100644 --- a/ram/bookshelf/migrations/0016_basebook_book_catalogue.py +++ b/ram/bookshelf/migrations/0016_basebook_book_catalogue.py @@ -1,7 +1,8 @@ # Generated by Django 5.1.2 on 2024-11-27 16:35 import django.db.models.deletion -from django.db import migrations, models +from django.db import migrations, models, connection +from django.db.utils import ProgrammingError, OperationalError def basebook_to_book(apps, schema_editor): @@ -16,6 +17,19 @@ def basebook_to_book(apps, schema_editor): b.authors.set(row.old_authors.all()) +def drop_temporary_tables(apps, schema_editor): + try: + with connection.cursor() as cursor: + cursor.execute( + 'DROP TABLE IF EXISTS bookshelf_basebook_old_authors' + ) + cursor.execute( + 'DROP TABLE IF EXISTS bookshelf_basebook_authors' + ) + except (ProgrammingError, OperationalError): + pass + + class Migration(migrations.Migration): dependencies = [ @@ -101,10 +115,6 @@ class Migration(migrations.Migration): model_name="basebook", name="old_title", ), - # migrations.RemoveField( - # model_name="basebook", - # name="old_authors", - # ), migrations.RemoveField( model_name="basebook", name="old_publisher", @@ -138,4 +148,16 @@ class Migration(migrations.Migration): }, bases=("bookshelf.basebook",), ), + # Required by Dajngo 6.0 on SQLite + migrations.SeparateDatabaseAndState( + state_operations=[ + migrations.RemoveField( + model_name="basebook", + name="old_authors", + ), + ], + database_operations=[ + migrations.RunPython(drop_temporary_tables) + ] + ), ]