diff --git a/wagtail_modeltranslation/tests/models.py b/wagtail_modeltranslation/tests/models.py index 4e3637e..ddfcff9 100755 --- a/wagtail_modeltranslation/tests/models.py +++ b/wagtail_modeltranslation/tests/models.py @@ -1,6 +1,8 @@ # coding: utf-8 from django.db import models +from django.http import HttpResponse from modelcluster.fields import ParentalKey +from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin, route from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel from wagtail.wagtailcore import blocks from wagtail.wagtailcore.fields import StreamField @@ -24,9 +26,11 @@ class TestSlugPage1(WagtailPage): class TestSlugPage2(WagtailPage): pass + class TestSlugPage1Subclass(TestSlugPage1): pass + class PatchTestPage(WagtailPage): description = models.CharField(max_length=50) @@ -193,3 +197,13 @@ class InlinePanelPage(WagtailPage): content_panels = [ InlinePanel('related_page_model') ] + + +class RoutablePageTest(RoutablePageMixin, WagtailPage): + @route(r'^archive/year/1984/$') + def archive_for_1984(self, request): + return HttpResponse("we were always at war with eastasia") + + @route(r'^archive/year/(\d+)/$') + def archive_by_year(self, request, year): + return HttpResponse("ARCHIVE BY YEAR: " + str(year)) diff --git a/wagtail_modeltranslation/tests/tests.py b/wagtail_modeltranslation/tests/tests.py index 7bbcdbb..07c258f 100755 --- a/wagtail_modeltranslation/tests/tests.py +++ b/wagtail_modeltranslation/tests/tests.py @@ -705,6 +705,18 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): }, }, }, + 'routable_page': { + 'model': models.RoutablePageTest, + 'kwargs': {'title': 'Routable Page', 'live': True, + 'slug_de': 'routing-de-03', 'slug_en': 'routing-en-03'}, + 'children': { + 'grandchild1': { + 'model': models.TestSlugPage1, + 'kwargs': {'title': 'grandchild1 routing', + 'slug_de': 'routing-de-0301', 'slug_en': 'routing-en-0301'}, + }, + }, + }, }, } page_factory.create_page_tree(site_pages) @@ -712,13 +724,28 @@ class WagtailModeltranslationTest(WagtailModeltranslationTestBase): root_page = site_pages['instance'] page_0101 = site_pages['children']['child1']['children']['grandchild1']['instance'] page_0201 = site_pages['children']['child2']['children']['grandchild1']['instance'] + page_0301 = site_pages['children']['routable_page']['children']['grandchild1']['instance'] self.check_route_request(root_page, ['routing-de-01', 'routing-de-0101'], page_0101) self.check_route_request(root_page, ['routing-de-02', 'routing-de-0201'], page_0201) + # routable page test + routable_page = site_pages['children']['routable_page']['instance'] + view, args, kwargs = routable_page.resolve_subpage('/archive/year/2014/') + self.assertEqual(view, routable_page.archive_by_year) + self.assertEqual(args, ('2014',)) + self.assertEqual(kwargs, {}) + self.check_route_request(root_page, ['routing-de-03', 'routing-de-0301'], page_0301) + trans_real.activate('en') # assert translated slugs fetch the correct page self.check_route_request(root_page, ['routing-en-01', 'routing-en-0101'], page_0101) # in the absence of translated slugs assert the default ones work self.check_route_request(root_page, ['routing-de-02', 'routing-de-0201'], page_0201) + + view, args, kwargs = routable_page.resolve_subpage('/archive/year/2014/') + self.assertEqual(view, routable_page.archive_by_year) + self.assertEqual(args, ('2014',)) + self.assertEqual(kwargs, {}) + self.check_route_request(root_page, ['routing-en-03', 'routing-en-0301'], page_0301) diff --git a/wagtail_modeltranslation/tests/translation.py b/wagtail_modeltranslation/tests/translation.py index 138649d..6eb4954 100755 --- a/wagtail_modeltranslation/tests/translation.py +++ b/wagtail_modeltranslation/tests/translation.py @@ -5,9 +5,7 @@ from wagtail_modeltranslation.tests.models import TestRootPage, TestSlugPage1, T PatchTestSnippet, FieldPanelPage, ImageChooserPanelPage, FieldRowPanelPage, MultiFieldPanelPage, InlinePanelPage, \ FieldPanelSnippet, ImageChooserPanelSnippet, FieldRowPanelSnippet, MultiFieldPanelSnippet, PageInlineModel, \ BaseInlineModel, StreamFieldPanelPage, StreamFieldPanelSnippet, SnippetInlineModel, InlinePanelSnippet, \ - TestSlugPage1Subclass - -from wagtail.wagtailcore.models import Page + TestSlugPage1Subclass, RoutablePageTest # Wagtail Models @@ -107,3 +105,8 @@ class InlinePanelModelTranslationOptions(TranslationOptions): translator.register(InlinePanelSnippet, InlinePanelModelTranslationOptions) + + +@register(RoutablePageTest) +class RoutablePageTestTranslationOptions(TranslationOptions): + fields = ()