diff --git a/wagtail/tests/testapp/migrations/0023_mycustompage.py b/wagtail/tests/testapp/migrations/0023_mycustompage.py new file mode 100644 index 0000000000..554c06aa97 --- /dev/null +++ b/wagtail/tests/testapp/migrations/0023_mycustompage.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2015-12-23 22:49 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('wagtailcore', '0023_alter_page_revision_on_delete_behaviour'), + ('tests', '0022_uploaded_by_user_on_delete_set_null'), + ] + + operations = [ + migrations.CreateModel( + name='MyCustomPage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + ] diff --git a/wagtail/tests/testapp/models.py b/wagtail/tests/testapp/models.py index ca035ac702..dca26b1ada 100644 --- a/wagtail/tests/testapp/models.py +++ b/wagtail/tests/testapp/models.py @@ -588,3 +588,17 @@ class CustomManager(PageManager): class CustomManagerPage(Page): objects = CustomManager() + + +class MyBasePage(Page): + """ + A base Page model, used to set site-wide defaults and overrides. + """ + objects = CustomManager() + + class Meta: + abstract = True + + +class MyCustomPage(MyBasePage): + pass diff --git a/wagtail/wagtailcore/tests/test_page_model.py b/wagtail/wagtailcore/tests/test_page_model.py index 3ba094a72e..2a7ab86a74 100644 --- a/wagtail/wagtailcore/tests/test_page_model.py +++ b/wagtail/wagtailcore/tests/test_page_model.py @@ -17,7 +17,7 @@ from wagtail.tests.testapp.models import ( MTIBasePage, MTIChildPage, AbstractPage, TaggedPage, BlogCategory, BlogCategoryBlogPage, Advert, ManyToManyBlogPage, GenericSnippetPage, BusinessNowherePage, SingletonPage, - CustomManager, CustomManagerPage) + CustomManager, CustomManagerPage, MyCustomPage) from wagtail.tests.utils import WagtailTestUtils @@ -1028,3 +1028,11 @@ class TestPageManager(TestCase): custom Manager inherits from PageManager. """ self.assertIs(type(CustomManagerPage.objects), CustomManager) + + def test_abstract_base_page_manager(self): + """ + Abstract base classes should be able to override their default Manager, + and Wagtail should respect this. It is up to the developer to ensure + their custom Manager inherits from PageManager. + """ + self.assertIs(type(MyCustomPage.objects), CustomManager)