Projet

Général

Profil

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

Lauréline Guérin, 19 novembre 2019 15:27

Télécharger (2,72 ko)

Voir les différences:

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

 combo/data/models.py | 10 ++++------
 tests/test_pages.py  |  7 ++++++-
 2 files changed, 10 insertions(+), 7 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]
181 181
                slug = base_slug.strip('-')
182 182
            i = 1
183
            while True:
184
                try:
185
                    Page.objects.get(slug=slug, parent_id=self.parent_id)
186
                except ObjectDoesNotExist:
187
                    break
183
            while Page.objects.filter(slug=slug, parent_id=self.parent_id).exists():
188 184
                i += 1
189 185
                slug = '%s-%s' % (base_slug, i)
190 186
            self.slug = slug
......
442 438
        new_page.pk = None
443 439
        # set title
444 440
        new_page.title = _('Copy of %s') % self.title
441
        # reset slug
442
        new_page.slug = None
445 443
        # reset snapshot
446 444
        new_page.snapshot = None
447 445
        # set order
tests/test_pages.py
197 197
    group1 = Group.objects.create(name='foobar')
198 198
    group2 = Group.objects.create(name='fooblah')
199 199

  
200
    Page.objects.create()  # page without snapshot, with slug 'index'
200 201
    page = Page.objects.create(
201 202
        title='foo',
202 203
        slug='foo',
......
213 214
    new_page = page.duplicate()
214 215
    assert new_page.pk != page.pk
215 216
    assert new_page.title == 'Copy of foo'
216
    assert new_page.slug == page.slug
217
    assert new_page.slug == 'copy-of-foo'
217 218
    assert new_page.description == page.description
218 219
    assert new_page.parent is None
219 220
    assert new_page.snapshot is None
......
231 232
    assert new_cell2.placeholder == cell2.placeholder
232 233
    assert list(new_cell2.groups.all()) == []
233 234

  
235
    # duplicate again !
236
    new_page = page.duplicate()
237
    assert new_page.slug == 'copy-of-foo-2'
238

  
234 239
    parent = Page.objects.create()
235 240
    page.parent = parent
236 241
    page.save()
237
-