data: get descendants of a page excluding page (#10117)
This commit is contained in:
parent
465c856895
commit
48f7353309
|
@ -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:
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue