Projet

Général

Profil

0002-data-get-descendants-of-a-page-excluding-page-10117.patch

Lauréline Guérin, 28 août 2020 16:01

Télécharger (2,42 ko)

Voir les différences:

Subject: [PATCH 2/3] data: get descendants of a page excluding page (#10117)

 combo/data/models.py | 14 ++++++++++----
 tests/test_pages.py  |  4 ++++
 2 files changed, 14 insertions(+), 4 deletions(-)
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
-