diff --git a/src/backend/core/migrations/0018_update_blank_title.py b/src/backend/core/migrations/0018_update_blank_title.py new file mode 100644 index 00000000..74e379e9 --- /dev/null +++ b/src/backend/core/migrations/0018_update_blank_title.py @@ -0,0 +1,25 @@ +from django.db import migrations + + +def update_titles_to_null(apps, schema_editor): + """ + If the titles are "Untitled document" or "Unbenanntes Dokument" or "Document sans titre" + we set them to Null + """ + Document = apps.get_model("core", "Document") + Document.objects.filter( + title__in=["Untitled document", "Unbenanntes Dokument", "Document sans titre"] + ).update(title=None) + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0017_add_fields_for_soft_delete"), + ] + + operations = [ + migrations.RunPython( + update_titles_to_null, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/src/backend/core/tests/migrations/__init__.py b/src/backend/core/tests/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/backend/core/tests/migrations/test_0018_update_blank_title.py b/src/backend/core/tests/migrations/test_0018_update_blank_title.py new file mode 100644 index 00000000..1ac36c6e --- /dev/null +++ b/src/backend/core/tests/migrations/test_0018_update_blank_title.py @@ -0,0 +1,35 @@ +import pytest + +from core import factories + + +@pytest.mark.django_db +def test_update_blank_title_migration(migrator): + """ + Test that the migration fixes the titles of documents that are + "Untitled document", "Unbenanntes Dokument" or "Document sans titre" + """ + migrator.apply_initial_migration(("core", "0017_add_fields_for_soft_delete")) + + english_doc = factories.DocumentFactory(title="Untitled document") + german_doc = factories.DocumentFactory(title="Unbenanntes Dokument") + french_doc = factories.DocumentFactory(title="Document sans titre") + other_doc = factories.DocumentFactory(title="My document") + + assert english_doc.title == "Untitled document" + assert german_doc.title == "Unbenanntes Dokument" + assert french_doc.title == "Document sans titre" + assert other_doc.title == "My document" + + # Apply the migration + migrator.apply_tested_migration(("core", "0018_update_blank_title")) + + english_doc.refresh_from_db() + german_doc.refresh_from_db() + french_doc.refresh_from_db() + other_doc.refresh_from_db() + + assert english_doc.title == None + assert german_doc.title == None + assert french_doc.title == None + assert other_doc.title == "My document"