data: get descendants of a page excluding page (#10117)

This commit is contained in:
Lauréline Guérin 2020-08-27 10:27:57 +02:00
parent 465c856895
commit 48f7353309
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 14 additions and 4 deletions

View File

@ -249,13 +249,19 @@ class Page(models.Model):
return bool(self._children)
return Page.objects.filter(parent_id=self.id).exists()
def get_descendants_and_me(self):
def get_descendant_pages(page):
descendants = [page]
def get_descendants(self, include_myself=False):
def get_descendant_pages(page, include_page=True):
if include_page:
descendants = [page]
else:
descendants = []
for item in page.get_children():
descendants.extend(get_descendant_pages(item))
return descendants
return Page.objects.filter(id__in=[x.id for x in get_descendant_pages(self)])
return Page.objects.filter(id__in=[x.id for x in get_descendant_pages(self, include_page=include_myself)])
def get_descendants_and_me(self):
return self.get_descendants(include_myself=True)
def get_template_display_name(self):
try:

View File

@ -429,6 +429,7 @@ def test_page_is_new(freezer):
page = Page.objects.get(slug='page-1')
assert not page.is_new()
def test_get_descendants_and_me():
''' 1
|
@ -449,8 +450,11 @@ def test_get_descendants_and_me():
add_pages()
page = Page.objects.get(slug='page-1')
assert len(page.get_descendants()) == 8
assert len(page.get_descendants_and_me()) == 9
page = Page.objects.get(slug='page-2')
assert [int(x.title) for x in page.get_descendants()] == [3, 4, 5]
assert [int(x.title) for x in page.get_descendants_and_me()] == [2, 3, 4, 5]
page = Page.objects.get(slug='page-3')
assert [int(x.title) for x in page.get_descendants()] == []
assert [int(x.title) for x in page.get_descendants_and_me()] == [3]