本文整理汇总了Python中wagtail.core.models.UserPagePermissionsProxy.explorable_pages方法的典型用法代码示例。如果您正苦于以下问题:Python UserPagePermissionsProxy.explorable_pages方法的具体用法?Python UserPagePermissionsProxy.explorable_pages怎么用?Python UserPagePermissionsProxy.explorable_pages使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wagtail.core.models.UserPagePermissionsProxy
的用法示例。
在下文中一共展示了UserPagePermissionsProxy.explorable_pages方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_explorable_pages_with_permission_gap_in_hierarchy
# 需要导入模块: from wagtail.core.models import UserPagePermissionsProxy [as 别名]
# 或者: from wagtail.core.models.UserPagePermissionsProxy import explorable_pages [as 别名]
def test_explorable_pages_with_permission_gap_in_hierarchy(self):
corporate_editor = get_user_model().objects.get(username='corporateeditor')
user_perms = UserPagePermissionsProxy(corporate_editor)
about_us_page = Page.objects.get(url_path='/home/about-us/')
businessy_events = Page.objects.get(url_path='/home/events/businessy-events/')
events_page = Page.objects.get(url_path='/home/events/')
explorable_pages = user_perms.explorable_pages()
self.assertTrue(explorable_pages.filter(id=about_us_page.id).exists())
self.assertTrue(explorable_pages.filter(id=businessy_events.id).exists())
self.assertTrue(explorable_pages.filter(id=events_page.id).exists())
示例2: test_explorable_pages
# 需要导入模块: from wagtail.core.models import UserPagePermissionsProxy [as 别名]
# 或者: from wagtail.core.models.UserPagePermissionsProxy import explorable_pages [as 别名]
def test_explorable_pages(self):
event_editor = get_user_model().objects.get(username='eventeditor')
christmas_page = EventPage.objects.get(url_path='/home/events/christmas/')
unpublished_event_page = EventPage.objects.get(url_path='/home/events/tentative-unpublished-event/')
someone_elses_event_page = EventPage.objects.get(url_path='/home/events/someone-elses-event/')
about_us_page = Page.objects.get(url_path='/home/about-us/')
user_perms = UserPagePermissionsProxy(event_editor)
explorable_pages = user_perms.explorable_pages()
# Verify all pages below /home/events/ are explorable
self.assertTrue(explorable_pages.filter(id=christmas_page.id).exists())
self.assertTrue(explorable_pages.filter(id=unpublished_event_page.id).exists())
self.assertTrue(explorable_pages.filter(id=someone_elses_event_page.id).exists())
# Verify page outside /events/ tree are not explorable
self.assertFalse(explorable_pages.filter(id=about_us_page.id).exists())
示例3: index
# 需要导入模块: from wagtail.core.models import UserPagePermissionsProxy [as 别名]
# 或者: from wagtail.core.models.UserPagePermissionsProxy import explorable_pages [as 别名]
def index(request, parent_page_id=None):
if parent_page_id:
parent_page = get_object_or_404(Page, id=parent_page_id)
else:
parent_page = Page.get_first_root_node()
# This will always succeed because of the @user_passes_test above.
root_page = get_explorable_root_page(request.user)
# If this page isn't a descendant of the user's explorable root page,
# then redirect to that explorable root page instead.
if not (
parent_page.pk == root_page.pk
or parent_page.is_descendant_of(root_page)
):
return redirect('wagtailadmin_explore', root_page.pk)
parent_page = parent_page.specific
user_perms = UserPagePermissionsProxy(request.user)
pages = (
parent_page.get_children().prefetch_related(
"content_type", "sites_rooted_here"
)
& user_perms.explorable_pages()
)
# Get page ordering
ordering = request.GET.get('ordering', '-latest_revision_created_at')
if ordering not in [
'title',
'-title',
'content_type',
'-content_type',
'live', '-live',
'latest_revision_created_at',
'-latest_revision_created_at',
'ord'
]:
ordering = '-latest_revision_created_at'
if ordering == 'ord':
# preserve the native ordering from get_children()
pass
elif ordering == 'latest_revision_created_at':
# order by oldest revision first.
# Special case NULL entries - these should go at the top of the list.
# Do this by annotating with Count('latest_revision_created_at'),
# which returns 0 for these
pages = pages.annotate(
null_position=Count('latest_revision_created_at')
).order_by('null_position', 'latest_revision_created_at')
elif ordering == '-latest_revision_created_at':
# order by oldest revision first.
# Special case NULL entries - these should go at the end of the list.
pages = pages.annotate(
null_position=Count('latest_revision_created_at')
).order_by('-null_position', '-latest_revision_created_at')
else:
pages = pages.order_by(ordering)
# Don't paginate if sorting by page order - all pages must be shown to
# allow drag-and-drop reordering
do_paginate = ordering != 'ord'
if do_paginate or pages.count() < 100:
# Retrieve pages in their most specific form, so that custom
# get_admin_display_title and get_url_parts methods on subclasses are respected.
# However, skip this on unpaginated listings with >100 child pages as this could
# be a significant performance hit. (This should only happen on the reorder view,
# and hopefully no-one is having to do manual reordering on listings that large...)
pages = pages.specific(defer=True)
# allow hooks to modify the queryset
for hook in hooks.get_hooks('construct_explorer_page_queryset'):
pages = hook(parent_page, pages, request)
# Pagination
if do_paginate:
paginator = Paginator(pages, per_page=50)
pages = paginator.get_page(request.GET.get('p'))
return render(request, 'wagtailadmin/pages/index.html', {
'parent_page': parent_page.specific,
'ordering': ordering,
'pagination_query_params': "ordering=%s" % ordering,
'pages': pages,
'do_paginate': do_paginate,
})