Beispiel #1
0
    def get_context(self):
        context = super(CorrectedPagesSummaryPanel, self).get_context()

        pages = utils.exclude_variants(Page.objects.all().specific())

        context['total_pages'] = len(pages) - 1
        return context
    def get_total_pages(self, context):
        # Perform the same check as Wagtail to get the correct count.
        # Only correct the count when a root page is available to the user.
        # The `PagesSummaryItem` will return a page count of 0 otherwise.
        # https://github.com/wagtail/wagtail/blob/5c9ff23e229acabad406c42c4e13cbaea32e6c15/wagtail/admin/site_summary.py#L38
        root_page = context.get("root_page", None)
        if root_page:
            pages = utils.exclude_variants(
                Page.objects.descendant_of(root_page, inclusive=True))
            page_count = pages.count()

            if root_page.is_root():
                page_count -= 1

            return page_count
Beispiel #3
0
def test_exclude_variants_with_pages_querysets():
    '''
    Test that excludes variant works for querysets
    '''
    for i in range(5):
        page = WagtailPage(path="/" + str(i),
                           depth=0,
                           url_path="/",
                           title="Hoi " + str(i))
        page.save()
    pages = WagtailPage.objects.all().order_by('id')

    result = exclude_variants(pages)
    assert type(result) == type(pages)
    assert result == pages
Beispiel #4
0
def test_exclude_variants_with_pages_querysets():
    '''
    Test that excludes variant works for querysets
    '''
    for i in range(5):
        page = ContentPageFactory(path="/" + str(i),
                                  depth=0,
                                  url_path="/",
                                  title="Hoi " + str(i))
        page.save()
    pages = WagtailPage.objects.all().specific().order_by('id')

    result = exclude_variants(pages)
    assert type(result) == type(pages)
    assert set(result.values_list('pk', flat=True)) == set(
        pages.values_list('pk', flat=True))
Beispiel #5
0
def test_exclude_variants_with_pages_querysets_meta_none():
    '''
    Test that excludes variant works for querysets with meta as none
    '''
    for i in range(5):
        page = WagtailPage(path="/" + str(i),
                           depth=0,
                           url_path="/",
                           title="Hoi " + str(i))
        page.save()
    pages = WagtailPage.objects.all().order_by('id')
    # add variants
    for page in pages:
        page.personalisation_metadata = None
        page.save()

    result = exclude_variants(pages)
    assert type(result) == type(pages)
    assert result == pages
Beispiel #6
0
def test_exclude_variants_with_pages_querysets_not_canonical():
    '''
    Test that excludes variant works for querysets with
    personalisation_metadata canonical False
    '''
    for i in range(5):
        page = WagtailPage(path="/" + str(i),
                           depth=0,
                           url_path="/",
                           title="Hoi " + str(i))
        page.save()
    pages = WagtailPage.objects.all().order_by('id')
    # add variants
    for page in pages:
        page.personalisation_metadata = Metadata(is_canonical=False)
        page.save()

    result = exclude_variants(pages)
    assert type(result) == type(pages)
    assert result.count() == 0
Beispiel #7
0
def test_exclude_variants_with_pages_querysets_meta_none():
    '''
    Test that excludes variant works for querysets with meta as none
    '''
    for i in range(5):
        page = ContentPageFactory(path="/" + str(i),
                                  depth=0,
                                  url_path="/",
                                  title="Hoi " + str(i))
        page.save()
    pages = WagtailPage.objects.all().specific().order_by('id')
    # add variants
    for page in pages:
        page.personalisation_metadata = PersonalisablePageMetadataFactory(
            canonical_page=page, variant=page)
        page.save()

    pages = WagtailPage.objects.all().specific()
    result = exclude_variants(pages)
    assert type(result) == type(pages)
    assert set(result.values_list('pk', flat=True)) == set(
        pages.values_list('pk', flat=True))
Beispiel #8
0
def test_exclude_variants_with_pages_querysets_not_canonical():
    '''
    Test that excludes variant works for querysets with
    personalisation_metadata canonical False
    '''
    for i in range(5):
        page = ContentPageFactory(path="/" + str(i),
                                  depth=0,
                                  url_path="/",
                                  title="Hoi " + str(i))
        page.save()
    pages = WagtailPage.objects.all().specific().order_by('id')
    # add variants
    for page in pages:
        variant = ContentPageFactory(title='variant %d' % page.pk)
        page.personalisation_metadata = PersonalisablePageMetadataFactory(
            canonical_page=page, variant=variant)
        page.save()

    pages = WagtailPage.objects.all().specific()
    result = exclude_variants(pages)
    assert type(result) == type(pages)
    assert result.count() < pages.count()
def dont_show_variant(parent_page, pages, request):
    return utils.exclude_variants(pages)
Beispiel #10
0
def test_exclude_variants_excludes_pages_with_metadata_not_canonical():
    page = PersonalisationMetadataPage()
    page.personalisation_metadata.is_canonical = False
    result = exclude_variants([page])
    assert result == []
Beispiel #11
0
def test_exclude_variants_includes_pages_with_metadata_canonical():
    page = PersonalisationMetadataPage()
    result = exclude_variants([page])
    assert result == [page]
Beispiel #12
0
def test_exclude_variants_includes_pages_with_metadata_none():
    page = PersonalisationMetadataPage()
    page.personalisation_metadata = None
    result = exclude_variants([page])
    assert result == [page]
Beispiel #13
0
def test_exclude_variants_includes_pages_with_no_metadata_property():
    page = PersonalisationMetadataPage()
    del page.personalisation_metadata
    result = exclude_variants([page])
    assert result == [page]