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
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
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))
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
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
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))
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)
def test_exclude_variants_excludes_pages_with_metadata_not_canonical(): page = PersonalisationMetadataPage() page.personalisation_metadata.is_canonical = False result = exclude_variants([page]) assert result == []
def test_exclude_variants_includes_pages_with_metadata_canonical(): page = PersonalisationMetadataPage() result = exclude_variants([page]) assert result == [page]
def test_exclude_variants_includes_pages_with_metadata_none(): page = PersonalisationMetadataPage() page.personalisation_metadata = None result = exclude_variants([page]) assert result == [page]
def test_exclude_variants_includes_pages_with_no_metadata_property(): page = PersonalisationMetadataPage() del page.personalisation_metadata result = exclude_variants([page]) assert result == [page]