Refs #27236 -- Added generic mechanism to handle the deprecation of migration operations.

This commit is contained in:
David Wobrock 2022-07-02 19:55:37 +02:00 committed by Mariusz Felisiak
parent 57793b4765
commit 41019e48bb
12 changed files with 230 additions and 24 deletions

View file

@ -1,6 +1,17 @@
from unittest import mock
from django.db import connection, migrations
from django.db.migrations.operations.base import Operation
class DummyOperation(Operation):
def state_forwards(self, app_label, state):
pass
def database_forwards(self, app_label, schema_editor, from_state, to_state):
pass
def database_backwards(self, app_label, schema_editor, from_state, to_state):
pass
try:
from django.contrib.postgres.operations import (
@ -15,14 +26,14 @@ try:
UnaccentExtension,
)
except ImportError:
BloomExtension = mock.Mock()
BtreeGinExtension = mock.Mock()
BtreeGistExtension = mock.Mock()
CITextExtension = mock.Mock()
CreateExtension = mock.Mock()
HStoreExtension = mock.Mock()
TrigramExtension = mock.Mock()
UnaccentExtension = mock.Mock()
BloomExtension = DummyOperation
BtreeGinExtension = DummyOperation
BtreeGistExtension = DummyOperation
CITextExtension = DummyOperation
CreateExtension = DummyOperation
HStoreExtension = DummyOperation
TrigramExtension = DummyOperation
UnaccentExtension = DummyOperation
needs_crypto_extension = False
else:
needs_crypto_extension = (
@ -41,7 +52,7 @@ class Migration(migrations.Migration):
# dash in its name.
CreateExtension("uuid-ossp"),
# CryptoExtension is required for RandomUUID() on PostgreSQL < 13.
CryptoExtension() if needs_crypto_extension else mock.Mock(),
CryptoExtension() if needs_crypto_extension else DummyOperation(),
HStoreExtension(),
TrigramExtension(),
UnaccentExtension(),