mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-20 13:01:56 +00:00
Add can_choose_root flag to AdminPageChooser widget
Also enable it in the relevant places: permission chooser, and selecting destination for copy page
This commit is contained in:
parent
340dd73602
commit
b534d64d8c
4 changed files with 14 additions and 5 deletions
|
|
@ -116,7 +116,7 @@ class CopyForm(forms.Form):
|
|||
self.fields['new_parent_page'] = forms.ModelChoiceField(
|
||||
initial=self.page.get_parent(),
|
||||
queryset=Page.objects.all(),
|
||||
widget=AdminPageChooser(),
|
||||
widget=AdminPageChooser(can_choose_root=True),
|
||||
label=_("New parent page"),
|
||||
help_text=_("This copy will be a child of this given parent page.")
|
||||
)
|
||||
|
|
|
|||
|
|
@ -66,3 +66,9 @@ class TestAdminPageChooserWidget(TestCase):
|
|||
|
||||
js_init = widget.render_js_init('test-id', 'test', None)
|
||||
self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"tests.simplepage\", \"tests.eventpage\"], null, false);")
|
||||
|
||||
def test_render_js_init_with_can_choose_root(self):
|
||||
widget = widgets.AdminPageChooser(can_choose_root=True)
|
||||
|
||||
js_init = widget.render_js_init('test-id', 'test', self.child_page)
|
||||
self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"wagtailcore.page\"], %d, true);" % self.root_page.id)
|
||||
|
|
|
|||
|
|
@ -122,9 +122,10 @@ class AdminPageChooser(AdminChooser):
|
|||
choose_another_text = _('Choose another page')
|
||||
link_to_chosen_text = _('Edit this page')
|
||||
|
||||
def __init__(self, content_type=None, **kwargs):
|
||||
def __init__(self, content_type=None, can_choose_root=False, **kwargs):
|
||||
super(AdminPageChooser, self).__init__(**kwargs)
|
||||
self._content_type = content_type
|
||||
self.can_choose_root = can_choose_root
|
||||
|
||||
@cached_property
|
||||
def target_content_types(self):
|
||||
|
|
@ -166,7 +167,7 @@ class AdminPageChooser(AdminChooser):
|
|||
|
||||
parent = page.get_parent() if page else None
|
||||
|
||||
return "createPageChooser({id}, {content_type}, {parent}, false);".format(
|
||||
return "createPageChooser({id}, {content_type}, {parent}, {can_choose_root});".format(
|
||||
id=json.dumps(id_),
|
||||
content_type=json.dumps([
|
||||
'{app}.{model}'.format(
|
||||
|
|
@ -174,4 +175,6 @@ class AdminPageChooser(AdminChooser):
|
|||
model=content_type.model)
|
||||
for content_type in self.target_content_types
|
||||
]),
|
||||
parent=json.dumps(parent.id if parent else None))
|
||||
parent=json.dumps(parent.id if parent else None),
|
||||
can_choose_root=('true' if self.can_choose_root else 'false')
|
||||
)
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ class GroupForm(forms.ModelForm):
|
|||
|
||||
class GroupPagePermissionForm(forms.ModelForm):
|
||||
page = forms.ModelChoiceField(queryset=Page.objects.all(),
|
||||
widget=AdminPageChooser(show_edit_link=False))
|
||||
widget=AdminPageChooser(show_edit_link=False, can_choose_root=True))
|
||||
|
||||
class Meta:
|
||||
model = GroupPagePermission
|
||||
|
|
|
|||
Loading…
Reference in a new issue