From 162b29b6ed8eddecfe5b541eff612263d0200988 Mon Sep 17 00:00:00 2001 From: Gary Krige Date: Mon, 6 Mar 2017 17:46:57 +0200 Subject: [PATCH] Use specific page when choosing a title Especially useful in RichText blocks when choosing an internal link that overrides Page url / title functionality --- .../wagtailadmin/tests/test_page_chooser.py | 23 ++++++++++++++++++- wagtail/wagtailadmin/views/chooser.py | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/wagtail/wagtailadmin/tests/test_page_chooser.py b/wagtail/wagtailadmin/tests/test_page_chooser.py index 48d5c9464f..62f828272b 100644 --- a/wagtail/wagtailadmin/tests/test_page_chooser.py +++ b/wagtail/wagtailadmin/tests/test_page_chooser.py @@ -4,7 +4,7 @@ from django.core.urlresolvers import reverse from django.test import TestCase from django.utils.http import urlencode -from wagtail.tests.testapp.models import EventIndex, EventPage, SimplePage +from wagtail.tests.testapp.models import EventIndex, EventPage, SimplePage, SingleEventPage from wagtail.tests.utils import WagtailTestUtils from wagtail.wagtailcore.models import Page @@ -132,6 +132,27 @@ class TestChooserBrowseChild(TestCase, WagtailTestUtils): self.assertFalse(pages[event_index_page.id].can_choose) self.assertTrue(pages[event_index_page.id].can_descend) + def test_with_url_extended_page_type(self): + # Add a page that overrides the url path + single_event_page = SingleEventPage( + title="foo", + location='the moon', audience='public', + cost='free', date_from='2001-01-01', + ) + self.root_page.add_child(instance=single_event_page) + + # Send request + response = self.get() + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'wagtailadmin/chooser/browse.html') + + page_urls = [ + page.url + for page in response.context['pages'] + ] + + self.assertIn('/foo/pointless-suffix/', page_urls) + def test_with_blank_page_type(self): # a blank page_type parameter should be equivalent to an absent parameter # (or an explicit page_type of wagtailcore.page) diff --git a/wagtail/wagtailadmin/views/chooser.py b/wagtail/wagtailadmin/views/chooser.py index fedf0a3e35..1b21fad6b3 100644 --- a/wagtail/wagtailadmin/views/chooser.py +++ b/wagtail/wagtailadmin/views/chooser.py @@ -74,7 +74,7 @@ def browse(request, parent_page_id=None): parent_page = all_desired_pages.first_common_ancestor() # Get children of parent page - pages = parent_page.get_children() + pages = parent_page.get_children().specific() # allow hooks to modify the queryset for hook in hooks.get_hooks('construct_page_chooser_queryset'):