8000 Fixed #6144 -- Always append slug prefix when using existing slug in … · django-cms/django-cms@fb77d60 · GitHub
[go: up one dir, main page]

Skip to content 8000

Commit fb77d60

Browse files
authored
Fixed #6144 -- Always append slug prefix when using existing slug in wizard (#6145)
1 parent f3978ba commit fb77d60

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

cms/tests/test_wizards.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,31 @@ def test_create_page_with_existing_slug(self):
389389
self.assertTrue(form.is_valid())
390390
self.assertTrue(form.save().title_set.filter(slug='page-3'))
391391

392+
# Now explicitly request the page-2 slug
393+
data['slug'] = 'page-2'
394+
395+
# slug -> page-2-2
396+
form = CreateCMSPageForm(
397+
data=data,
398+
wizard_page=None,
399+
wizard_user=superuser,
400+
wizard_language='en',
401+
wizard_page_node=None,
402+
)
403+
self.assertTrue(form.is_valid())
404+
self.assertTrue(form.save().title_set.filter(slug='page-2-2'))
405+
406+
# slug -> page-2-3
407+
form = CreateCMSPageForm(
408+
data=data,
409+
wizard_page=None,
410+
wizard_user=superuser,
411+
wizard_language='en',
412+
wizard_page_node=None,
413+
)
414+
self.assertTrue(form.is_valid())
415+
self.assertTrue(form.save().title_set.filter(slug='page-2-3'))
416+
392417

393418
# This entire test class can be removed in 3.5.0
394419
class TestWizardSettings(CMSTestCase):

cms/utils/page.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,24 +190,24 @@ def get_all_pages_from_path(site, path, language):
190190
return pages.filter(title_set__language=language)
191191

192192

193-
def get_available_slug(site, path, language, suffix='copy'):
193+
def get_available_slug(site, path, language, suffix='copy', modified=False):
194194
"""
195195
Generates slug for path.
196-
If path is used, appends the value of APPEND_TO_SLUG to the end.
196+
If path is used, appends the value of suffix to the end.
197197
"""
198198
base, _, slug = path.rpartition('/')
199199
pages = get_all_pages_from_path(site, path, language)
200200

201201
if pages.exists():
202202
match = SUFFIX_REGEX.match(slug)
203203

204-
if match:
204+
if match and modified:
205205
_next = int(match.groups()[-1]) + 1
206206
slug = SUFFIX_REGEX.sub('\g<1>-{}'.format(_next), slug)
207207
elif suffix:
208208
slug += suffix + '-2'
209209
else:
210210
slug += '-2'
211211
path = '%s/%s' % (base, slug) if base else slug
212-
return get_available_slug(site, path, language, suffix=suffix)
212+
return get_available_slug(site, path, language, suffix, modified=True)
213213
return slug

0 commit comments

Comments
 (0)
0