Projet

Général

Profil

0001-page-fix-slug-on-page-duplication-37733.patch

Lauréline Guérin, 19 novembre 2019 08:28

Télécharger (1,96 ko)

Voir les différences:

Subject: [PATCH] page: fix slug on page duplication (#37733)

 combo/data/models.py | 12 +++++++++++-
 tests/test_pages.py  |  2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)
combo/data/models.py
174 174
            max_order = Page.objects.all().aggregate(Max('order')).get('order__max') or 0
175 175
            self.order = max_order + 1
176 176
        if not self.slug:
177
            if Page.objects.count() == 0:
177
            if not Page.objects.exists():
178 178
                slug = 'index'
179 179
            else:
180 180
                base_slug = slugify(self.title)[:40]
......
442 442
        new_page.pk = None
443 443
        # set title
444 444
        new_page.title = _('Copy of %s') % self.title
445
        # set slug
446
        base_slug = slugify(new_page.title)[:40]
447
        slug = base_slug.strip('-')
448
        i = 1
449
        while True:
450
            if not Page.objects.filter(slug=slug, parent_id=new_page.parent_id).exists():
451
                break
452
            i += 1
453
            slug = '%s-%s' % (base_slug, i)
454
        new_page.slug = slug
445 455
        # reset snapshot
446 456
        new_page.snapshot = None
447 457
        # set order
tests/test_pages.py
213 213
    new_page = page.duplicate()
214 214
    assert new_page.pk != page.pk
215 215
    assert new_page.title == 'Copy of foo'
216
    assert new_page.slug == page.slug
216
    assert new_page.slug == 'copy-of-foo'
217 217
    assert new_page.description == page.description
218 218
    assert new_page.parent is None
219 219
    assert new_page.snapshot is None
220
-