kopia lustrzana https://github.com/wagtail/wagtail
Add a can_choose_root flag to PageChooserBlock
rodzic
c025e1d3e5
commit
f668922893
|
|
@ -188,7 +188,13 @@ PageChooserBlock
|
|||
|
||||
``wagtail.wagtailcore.blocks.PageChooserBlock``
|
||||
|
||||
A control for selecting a page object, using Wagtail's page browser. The keyword argument ``required`` is accepted.
|
||||
A control for selecting a page object, using Wagtail's page browser. The following keyword arguments are accepted:
|
||||
|
||||
``required`` (default: True)
|
||||
If true, the field cannot be left blank.
|
||||
|
||||
``can_choose_root`` (default: False)
|
||||
If true, the editor can choose the tree root as a page. Normally this would be undesirable, since the tree root is never a usable page, but in some specialised cases it may be appropriate; for example, a block providing a feed of related articles could use a PageChooserBlock to select which subsection articles will be taken from, with the root corresponding to 'everywhere'.
|
||||
|
||||
DocumentChooserBlock
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -366,6 +366,10 @@ class ChooserBlock(FieldBlock):
|
|||
|
||||
|
||||
class PageChooserBlock(ChooserBlock):
|
||||
def __init__(self, can_choose_root=False, **kwargs):
|
||||
self.can_choose_root = can_choose_root
|
||||
super(PageChooserBlock, self).__init__(**kwargs)
|
||||
|
||||
@cached_property
|
||||
def target_model(self):
|
||||
from wagtail.wagtailcore.models import Page # TODO: allow limiting to specific page types
|
||||
|
|
@ -374,7 +378,7 @@ class PageChooserBlock(ChooserBlock):
|
|||
@cached_property
|
||||
def widget(self):
|
||||
from wagtail.wagtailadmin.widgets import AdminPageChooser
|
||||
return AdminPageChooser
|
||||
return AdminPageChooser(can_choose_root=self.can_choose_root)
|
||||
|
||||
def render_basic(self, value):
|
||||
if value:
|
||||
|
|
|
|||
|
|
@ -1302,6 +1302,7 @@ class TestPageChooserBlock(TestCase):
|
|||
|
||||
empty_form_html = block.render_form(None, 'page')
|
||||
self.assertIn('<input id="page" name="page" placeholder="" type="hidden" />', empty_form_html)
|
||||
self.assertIn('createPageChooser("page", ["wagtailcore.page"], null, false);', empty_form_html)
|
||||
|
||||
christmas_page = Page.objects.get(slug='christmas')
|
||||
christmas_form_html = block.render_form(christmas_page, 'page')
|
||||
|
|
@ -1309,6 +1310,11 @@ class TestPageChooserBlock(TestCase):
|
|||
self.assertIn(expected_html, christmas_form_html)
|
||||
self.assertIn("pick a page, any page", christmas_form_html)
|
||||
|
||||
def test_form_render_with_can_choose_root(self):
|
||||
block = blocks.PageChooserBlock(help_text="pick a page, any page", can_choose_root=True)
|
||||
empty_form_html = block.render_form(None, 'page')
|
||||
self.assertIn('createPageChooser("page", ["wagtailcore.page"], null, true);', empty_form_html)
|
||||
|
||||
def test_form_response(self):
|
||||
block = blocks.PageChooserBlock()
|
||||
christmas_page = Page.objects.get(slug='christmas')
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue