torchbox/wagtail — pull request #560 by timheap (2014-08-21 00:23:13+00:00)
Title: Make RoutablePage a mixin

If a developer wanted to have a site-wide base page class, and also have some pages be `RoutablePage`s, a conflict between the automatically generated `page_ptr` fields would occur.

```python
from wagtail.wagtailcore.models import Page
from wagtail.contrib.wagtailroutablepage.models import RoutablePage

class SitePageBase(Page):
# common functionality
is_abstract = True
class Meta:
abstract = True

class MyPage(RoutablePage, SitePageBase):
# This model is invalid
pass
```

`RoutablePage` has been changed to be a mixin `RoutablePageMixin`. Page classes can use this to gain the `RoutablePage` functionality while still retaining the ability to subclass other models.

A `RoutablePage` class that derives from both `RoutablePageMixin` and `Page` has been left in for backwards compatibility, so old code will continue to function without any modifications.