mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-10 16:24:49 +00:00
Bypass 'choose a page type' screen when there is only one available choice in subpage_types
This commit is contained in:
parent
6bfe82f5e5
commit
eddb060c8d
3 changed files with 24 additions and 4 deletions
|
|
@ -303,6 +303,9 @@ class StandardChild(Page):
|
|||
pass
|
||||
|
||||
class BusinessIndex(Page):
|
||||
subpage_types = ['tests.BusinessChild', 'tests.BusinessSubIndex']
|
||||
|
||||
class BusinessSubIndex(Page):
|
||||
subpage_types = ['tests.BusinessChild']
|
||||
|
||||
class BusinessChild(Page):
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from django.test import TestCase
|
||||
from wagtail.tests.models import SimplePage, EventPage, StandardIndex, StandardChild, BusinessIndex, BusinessChild
|
||||
from wagtail.tests.models import SimplePage, EventPage, StandardIndex, StandardChild, BusinessIndex, BusinessChild, BusinessSubIndex
|
||||
from wagtail.tests.utils import unittest, WagtailTestUtils
|
||||
from wagtail.wagtailcore.models import Page, PageRevision
|
||||
from django.core.urlresolvers import reverse
|
||||
|
|
@ -681,24 +681,30 @@ class TestSubpageBusinessRules(TestCase, WagtailTestUtils):
|
|||
# Find root page
|
||||
self.root_page = Page.objects.get(id=2)
|
||||
|
||||
# Add standard page
|
||||
# Add standard page (allows subpages of any type)
|
||||
self.standard_index = StandardIndex()
|
||||
self.standard_index.title = "Standard Index"
|
||||
self.standard_index.slug = "standard-index"
|
||||
self.root_page.add_child(instance=self.standard_index)
|
||||
|
||||
# Add business page
|
||||
# Add business page (allows BusinessChild and BusinessSubIndex as subpages)
|
||||
self.business_index = BusinessIndex()
|
||||
self.business_index.title = "Business Index"
|
||||
self.business_index.slug = "business-index"
|
||||
self.root_page.add_child(instance=self.business_index)
|
||||
|
||||
# Add business child
|
||||
# Add business child (allows no subpages)
|
||||
self.business_child = BusinessChild()
|
||||
self.business_child.title = "Business Child"
|
||||
self.business_child.slug = "business-child"
|
||||
self.business_index.add_child(instance=self.business_child)
|
||||
|
||||
# Add business subindex (allows only BusinessChild as subpages)
|
||||
self.business_subindex = BusinessSubIndex()
|
||||
self.business_subindex.title = "Business Subindex"
|
||||
self.business_subindex.slug = "business-subindex"
|
||||
self.business_index.add_child(instance=self.business_subindex)
|
||||
|
||||
# Login
|
||||
self.login()
|
||||
|
||||
|
|
@ -754,3 +760,8 @@ class TestSubpageBusinessRules(TestCase, WagtailTestUtils):
|
|||
# but we can add a BusinessChild to BusinessIndex
|
||||
response = self.client.get(reverse('wagtailadmin_pages_create', args=('tests', 'businesschild', self.business_index.id)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_not_prompted_for_page_type_when_only_one_choice(self):
|
||||
response = self.client.get(reverse('wagtailadmin_pages_add_subpage', args=(self.business_subindex.id, )))
|
||||
# BusinessChild is the only valid subpage type of BusinessSubIndex, so redirect straight there
|
||||
self.assertRedirects(response, reverse('wagtailadmin_pages_create', args=('tests', 'businesschild', self.business_subindex.id)))
|
||||
|
|
|
|||
|
|
@ -59,6 +59,12 @@ def add_subpage(request, parent_page_id):
|
|||
|
||||
page_types = sorted(parent_page.clean_subpage_types(), key=lambda pagetype: pagetype.name.lower())
|
||||
|
||||
if len(page_types) == 1:
|
||||
# Only one page type is available - redirect straight to the create form rather than
|
||||
# making the user choose
|
||||
content_type = page_types[0]
|
||||
return redirect('wagtailadmin_pages_create', content_type.app_label, content_type.model, parent_page.id)
|
||||
|
||||
return render(request, 'wagtailadmin/pages/add_subpage.html', {
|
||||
'parent_page': parent_page,
|
||||
'page_types': page_types,
|
||||
|
|
|
|||
Loading…
Reference in a new issue