🩹(migration) add migration to update default titles
The frontend was setting a default titles for documents with empty titles. This migration updates the document table to set the title to null instead of the default title. We add a test to ensure that the migration works as expected.
This commit is contained in:
25
src/backend/core/migrations/0018_update_blank_title.py
Normal file
25
src/backend/core/migrations/0018_update_blank_title.py
Normal file
@@ -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
|
||||||
|
),
|
||||||
|
]
|
||||||
0
src/backend/core/tests/migrations/__init__.py
Normal file
0
src/backend/core/tests/migrations/__init__.py
Normal file
@@ -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"
|
||||||
Reference in New Issue
Block a user