Exemple #1
0
def home(request):

    panels = [
        SiteSummaryPanel(request),
        UpgradeNotificationPanel(request),
        PagesForModerationPanel(request),
        RecentEditsPanel(request),
    ]

    for fn in hooks.get_hooks('construct_homepage_panels'):
        fn(request, panels)

    root_page = get_explorable_root_page(request.user)
    if root_page:
        root_site = root_page.get_site()
    else:
        root_site = None

    real_site_name = None
    if root_site:
        real_site_name = root_site.site_name if root_site.site_name else root_site.hostname

    return render(request, "wagtailadmin/home.html", {
        'root_page': root_page,
        'root_site': root_site,
        'site_name': real_site_name if real_site_name else settings.WAGTAIL_SITE_NAME,
        'panels': sorted(panels, key=lambda p: p.order),
        'user': request.user
    })
Exemple #2
0
def home(request):

    panels = [
        SiteSummaryPanel(request),
        UpgradeNotificationPanel(request),
        PagesForModerationPanel(request),
        RecentEditsPanel(request),
    ]

    for fn in hooks.get_hooks('construct_homepage_panels'):
        fn(request, panels)

    root_page = get_explorable_root_page(request.user)
    if root_page:
        root_site = root_page.get_site()
    else:
        root_site = None

    real_site_name = None
    if root_site:
        real_site_name = root_site.site_name if root_site.site_name else root_site.hostname

    return render(request, "wagtailadmin/home.html", {
        'root_page': root_page,
        'root_site': root_site,
        'site_name': real_site_name if real_site_name else settings.WAGTAIL_SITE_NAME,
        'panels': sorted(panels, key=lambda p: p.order),
        'user': request.user
    })
Exemple #3
0
    def get_context(self, request):
        context = super(ExplorerMenuItem, self).get_context(request)
        start_page = get_explorable_root_page(request.user)

        if start_page:
            context['start_page_id'] = start_page.id

        return context
Exemple #4
0
    def get_context(self, request):
        context = super(ExplorerMenuItem, self).get_context(request)
        start_page = get_explorable_root_page(request.user)

        if start_page:
            context['start_page_id'] = start_page.id

        return context
Exemple #5
0
 def test_nonadmin_sees_pages_below_closest_common_ancestor(self):
     User = get_user_model()
     user = User.objects.get(username='******')
     # Josh has permissions for /example-home/content/page-1 and /example-home/other-content,
     # of which the closest common ancestor is /example-home.
     self.assertEqual(get_explorable_root_page(user).id, 4)
     for page in get_pages_with_direct_explore_permission(user):
         self.assertIn(page.id, [6, 8])
Exemple #6
0
 def test_nonadmin_sees_only_explorable_pages(self):
     # Sam has permissions for /home and /example-home/content/page-1 , of which the closest
     # common ancestor is root; we don't show root in the menu, so the top level will consist
     # of 'home' and 'example-home' (but not the sibling 'home-2', which Sam doesn't have
     # permission on)
     User = get_user_model()
     user = User.objects.get(username='******')
     self.assertEqual(get_explorable_root_page(user).id, 1)
     for page in get_pages_with_direct_explore_permission(user):
         self.assertIn(page.id, [2, 6])
def explorer_breadcrumb(context, page, include_self=False):
    user = context['request'].user

    # find the closest common ancestor of the pages that this user has direct explore permission
    # (i.e. add/edit/publish/lock) over; this will be the root of the breadcrumb
    cca = get_explorable_root_page(user)
    if not cca:
        return {'pages': Page.objects.none()}

    return {
        'pages': page.get_ancestors(inclusive=include_self).descendant_of(cca, inclusive=True)
    }
Exemple #8
0
def explorer_breadcrumb(context, page, include_self=False):
    user = context['request'].user

    # find the closest common ancestor of the pages that this user has direct explore permission
    # (i.e. add/edit/publish/lock) over; this will be the root of the breadcrumb
    cca = get_explorable_root_page(user)
    if not cca:
        return {'pages': Page.objects.none()}

    return {
        'pages': page.get_ancestors(inclusive=include_self).descendant_of(cca, inclusive=True)
    }
Exemple #9
0
def move_page(request, page_to_move_id):
    """
    Args:
        request: http request object
        page_to_move_id: id of the page to move

    This method sets viewed_page id to site's root page and calls wagtail's move page view
    Reason we override `cms/pages/(page_to_move_id)/move` view is to show user only those
    destinations where user has permissions

    """
    viewed_page = get_explorable_root_page(request.user)
    return move_choose_destination(request,
                                   page_to_move_id,
                                   viewed_page_id=viewed_page.id)
Exemple #10
0
    def get_user_pages(user, pages=None):
        """
        Args:
            user: instance of User model
            pages: queryset of pages to filter
        Returns: wagtail pages queryset where given user has add, edit, publish or lock permissions
        if pages queryset is provided filter is applied on that.
        """
        root_page = get_explorable_root_page(user)

        if root_page:
            user_pages = Page.objects.descendant_of(root_page, inclusive=True)
            if pages:
                user_pages = user_pages.filter(pk__in=pages)

        else:
            user_pages = Page.objects.none()

        return user_pages
Exemple #11
0
 def test_nonadmin_with_no_page_perms_cannot_explore(self):
     User = get_user_model()
     user = User.objects.get(username='******')
     self.assertEqual(get_explorable_root_page(user), None)
Exemple #12
0
 def test_nonadmin_sees_leaf_page_at_root_level(self):
     User = get_user_model()
     user = User.objects.get(username='******')
     self.assertEqual(get_explorable_root_page(user).id, 6)
Exemple #13
0
 def test_nav_root_for_nonadmin_is_closest_common_ancestor(self):
     User = get_user_model()
     user = User.objects.get(username='******')
     self.assertEqual(get_explorable_root_page(user).id, 2)
Exemple #14
0
 def test_admins_see_all_pages(self):
     User = get_user_model()
     user = User.objects.get(username='******')
     self.assertEqual(get_explorable_root_page(user).id, 1)