0002-data-get-descendants-of-a-page-excluding-page-10117.patch
combo/data/models.py | ||
---|---|---|
249 | 249 |
return bool(self._children) |
250 | 250 |
return Page.objects.filter(parent_id=self.id).exists() |
251 | 251 | |
252 |
def get_descendants_and_me(self): |
|
253 |
def get_descendant_pages(page): |
|
254 |
descendants = [page] |
|
252 |
def get_descendants(self, include_myself=False): |
|
253 |
def get_descendant_pages(page, include_page=True): |
|
254 |
if include_page: |
|
255 |
descendants = [page] |
|
256 |
else: |
|
257 |
descendants = [] |
|
255 | 258 |
for item in page.get_children(): |
256 | 259 |
descendants.extend(get_descendant_pages(item)) |
257 | 260 |
return descendants |
258 |
return Page.objects.filter(id__in=[x.id for x in get_descendant_pages(self)]) |
|
261 |
return Page.objects.filter(id__in=[x.id for x in get_descendant_pages(self, include_page=include_myself)]) |
|
262 | ||
263 |
def get_descendants_and_me(self): |
|
264 |
return self.get_descendants(include_myself=True) |
|
259 | 265 | |
260 | 266 |
def get_template_display_name(self): |
261 | 267 |
try: |
tests/test_pages.py | ||
---|---|---|
429 | 429 |
page = Page.objects.get(slug='page-1') |
430 | 430 |
assert not page.is_new() |
431 | 431 | |
432 | ||
432 | 433 |
def test_get_descendants_and_me(): |
433 | 434 |
''' 1 |
434 | 435 |
| |
... | ... | |
449 | 450 |
add_pages() |
450 | 451 | |
451 | 452 |
page = Page.objects.get(slug='page-1') |
453 |
assert len(page.get_descendants()) == 8 |
|
452 | 454 |
assert len(page.get_descendants_and_me()) == 9 |
453 | 455 |
page = Page.objects.get(slug='page-2') |
456 |
assert [int(x.title) for x in page.get_descendants()] == [3, 4, 5] |
|
454 | 457 |
assert [int(x.title) for x in page.get_descendants_and_me()] == [2, 3, 4, 5] |
455 | 458 |
page = Page.objects.get(slug='page-3') |
459 |
assert [int(x.title) for x in page.get_descendants()] == [] |
|
456 | 460 |
assert [int(x.title) for x in page.get_descendants_and_me()] == [3] |
457 |
- |