Unverified Commit 722344ee authored by Simon Charette's avatar Simon Charette
Browse files

Refs #24067 -- Fixed contenttypes rename tests failures on Oracle.

Broke the initial migration in two to work around #25530 and added
'django.contrib.auth' to the available_apps to make sure its tables are also
flushed as Oracle doesn't implement cascade deletion in sql_flush().

Thanks Tim for the report.
parent 9fed4ec4
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -4,22 +4,6 @@ from __future__ import unicode_literals
from django.db import migrations, models


def assert_foo_contenttype_not_cached(apps, schema_editor):
    ContentType = apps.get_model('contenttypes', 'ContentType')
    try:
        content_type = ContentType.objects.get_by_natural_key('contenttypes_tests', 'foo')
    except ContentType.DoesNotExist:
        pass
    else:
        if not ContentType.objects.filter(app_label='contenttypes_tests', model='foo').exists():
            raise AssertionError('The contenttypes_tests.Foo ContentType should not be cached.')
        elif content_type.model != 'foo':
            raise AssertionError(
                "The cached contenttypes_tests.Foo ContentType should have "
                "its model set to 'foo'."
            )


class Migration(migrations.Migration):

    operations = [
@@ -29,6 +13,4 @@ class Migration(migrations.Migration):
                ('id', models.AutoField(primary_key=True)),
            ],
        ),
        migrations.RenameModel('Foo', 'RenamedFoo'),
        migrations.RunPython(assert_foo_contenttype_not_cached, migrations.RunPython.noop)
    ]
+32 −0
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations


def assert_foo_contenttype_not_cached(apps, schema_editor):
    ContentType = apps.get_model('contenttypes', 'ContentType')
    try:
        content_type = ContentType.objects.get_by_natural_key('contenttypes_tests', 'foo')
    except ContentType.DoesNotExist:
        pass
    else:
        if not ContentType.objects.filter(app_label='contenttypes_tests', model='foo').exists():
            raise AssertionError('The contenttypes_tests.Foo ContentType should not be cached.')
        elif content_type.model != 'foo':
            raise AssertionError(
                "The cached contenttypes_tests.Foo ContentType should have "
                "its model set to 'foo'."
            )


class Migration(migrations.Migration):

    dependencies = [
        ('contenttypes_tests', '0001_initial'),
    ]

    operations = [
        migrations.RenameModel('Foo', 'RenamedFoo'),
        migrations.RunPython(assert_foo_contenttype_not_cached, migrations.RunPython.noop)
    ]
+5 −1
Original line number Diff line number Diff line
@@ -454,7 +454,11 @@ class ContentTypesMultidbTestCase(TestCase):
    MIGRATION_MODULES=dict(settings.MIGRATION_MODULES, contenttypes_tests='contenttypes_tests.operations_migrations'),
)
class ContentTypeOperationsTests(TransactionTestCase):
    available_apps = ['django.contrib.contenttypes', 'contenttypes_tests']
    available_apps = [
        'contenttypes_tests',
        'django.contrib.contenttypes',
        'django.contrib.auth',
    ]

    def setUp(self):
        app_config = apps.get_app_config('contenttypes_tests')