11# -*- coding: utf-8 -*-
22from cms .exceptions import NoHomeFound
33from 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
67from django .conf import settings
78from django .contrib .sites .models import Site
89from 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