0001-page-fix-slug-on-page-duplication-37733.patch
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 Page.objects.filter(slug=slug, parent_id=new_page.parent_id).exists(): |
|
450 |
i += 1 |
|
451 |
slug = '%s-%s' % (base_slug, i) |
|
452 |
new_page.slug = slug |
|
445 | 453 |
# reset snapshot |
446 | 454 |
new_page.snapshot = None |
447 | 455 |
# 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 |
- |