Add can_choose_root flag to page chooser views

pull/1837/head
Matt Westcott 2015-10-16 14:25:38 +01:00
rodzic 8ca01a8428
commit 22d1dd7c7e
2 zmienionych plików z 19 dodań i 1 usunięć

Wyświetl plik

@ -27,6 +27,22 @@ class TestChooserBrowse(TestCase, WagtailTestUtils):
self.assertTemplateUsed(response, 'wagtailadmin/chooser/browse.html')
class TestCanChooseRootFlag(TestCase, WagtailTestUtils):
def setUp(self):
self.login()
def get(self, params={}):
return self.client.get(reverse('wagtailadmin_choose_page'), params)
def test_cannot_choose_root_by_default(self):
response = self.get()
self.assertNotContains(response, '/admin/pages/1/edit/')
def test_can_choose_root(self):
response = self.get({'can_choose_root': 'true'})
self.assertContains(response, '/admin/pages/1/edit/')
class TestChooserBrowseChild(TestCase, WagtailTestUtils):
def setUp(self):
self.root_page = Page.objects.get(id=2)

Wyświetl plik

@ -69,8 +69,10 @@ def browse(request, parent_page_id=None):
else:
desired_classes = (Page, )
can_choose_root = request.GET.get('can_choose_root', False)
# Parent page can be chosen if it is a instance of desired_classes
parent_page.can_choose = issubclass(parent_page.specific_class or Page, desired_classes)
parent_page.can_choose = issubclass(parent_page.specific_class or Page, desired_classes) and (can_choose_root or not parent_page.is_root())
# Pagination
# We apply pagination first so we don't need to walk the entire list