From 45309fd524fc6fb7459f8d2d0831b0f51f9c3d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Wed, 23 Oct 2019 17:37:10 +0200 Subject: [PATCH] pages: add a param check_visibility to next/previous methods (#12437) --- combo/data/models.py | 8 ++++---- tests/test_pages.py | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/combo/data/models.py b/combo/data/models.py index b18f3d04..728f0faf 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -281,22 +281,22 @@ class Page(models.Model): tmpl.render(context, request) return placeholders - def get_next_page(self, user=None): + def get_next_page(self, user=None, check_visibility=True): pages = Page.get_as_reordered_flat_hierarchy(Page.objects.all()) this_page = [x for x in pages if x.id == self.id][0] pages = pages[pages.index(this_page)+1:] for page in pages: - if page.is_visible(user): + if not check_visibility or page.is_visible(user): return page return None - def get_previous_page(self, user=None): + def get_previous_page(self, user=None, check_visibility=True): pages = Page.get_as_reordered_flat_hierarchy(Page.objects.all()) pages.reverse() this_page = [x for x in pages if x.id == self.id][0] pages = pages[pages.index(this_page)+1:] for page in pages: - if page.is_visible(user): + if not check_visibility or page.is_visible(user): return page return None diff --git a/tests/test_pages.py b/tests/test_pages.py index b27db89c..aa701bd7 100644 --- a/tests/test_pages.py +++ b/tests/test_pages.py @@ -228,6 +228,11 @@ def test_next_previous(): page3.save() assert page.get_next_page(None) is None + assert page.get_next_page(check_visibility=False).id == page2.pk + assert page2.get_next_page(check_visibility=False).id == page3.pk + assert page3.get_previous_page(check_visibility=False).id == page2.pk + + def test_import_export_management_commands(): page = Page(title=u'foo', slug='foo', order=0) page.save()