Skip to content

Commit 24bb6d6

Browse files
committed
utils.page_resolver.is_valid_overwrite_url returns linkified pages on exception so the user can access the clashing page directly. More Issue 1166 work
1 parent f7190ca commit 24bb6d6

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

cms/admin/pageadmin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1063,7 +1063,7 @@ def change_status(self, request, page_id):
10631063
page = get_object_or_404(Page, pk=page_id)
10641064
if page.has_publish_permission(request):
10651065
try:
1066-
if page.published or is_valid_overwrite_url(page.get_absolute_url(),page):
1066+
if page.published or is_valid_overwrite_url(page.get_absolute_url(),page,False):
10671067
page.published = not page.published
10681068
page.save()
10691069
return admin_utils.render_admin_menu_item(request, page)

cms/utils/page_resolver.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# -*- coding: utf-8 -*-
22
from cms.exceptions import NoHomeFound
33
from cms.models.pagemodel import Page
4+
from django.utils.encoding import force_unicode
45

5-
from django.utils.translation import ugettext_lazy as _
6+
from django.utils.translation import ugettext_lazy as _, ungettext_lazy
67
from django.conf import settings
78
from django.contrib.sites.models import Site
89
from django.core.exceptions import ValidationError
@@ -131,7 +132,7 @@ def get_page_from_request(request, use_path=None):
131132
return page
132133

133134

134-
def is_valid_overwrite_url(url,instance):
135+
def is_valid_overwrite_url(url,instance,create_links=True):
135136
if url:
136137
if not any_path_re.match(url):
137138
raise ValidationError(_('Invalid URL, use /my/url format.'))
@@ -142,8 +143,16 @@ def is_valid_overwrite_url(url,instance):
142143
page_qs = [page_qs]
143144
for page in page_qs:
144145
if page and page.pk != instance.pk:
145-
url_clashes.append("'%s'" % page)
146+
if create_links:
147+
url_clashes.append('<a href="%(page_url)s%(pk)s">%(page_title)s</a>' %
148+
{'page_url':reverse('admin:cms_page_changelist'),'pk':page.pk,
149+
'page_title': force_unicode(page)
150+
} )
151+
else:
152+
url_clashes.append("'%s'" % page)
146153
if url_clashes:
147-
url_clashes.append("'%s'" % instance)
148-
raise ValidationError(_('Pages %(pages)s has the same url \'%(url)s\'.') % {'pages':", ".join(url_clashes),'url':url})
149-
return True
154+
raise ValidationError(ungettext_lazy('Page %(pages)s has the same url \'%(url)s\' as current page "%(instance)s".',
155+
'Pages %(pages)s have the same url \'%(url)s\' as current page "%(instance)s".',
156+
len(url_clashes)) %
157+
{'pages':", ".join(url_clashes),'url':url,'instance':instance})
158+
return True

0 commit comments

Comments
 (0)