Index: cms/sources.py |
=================================================================== |
--- a/cms/sources.py |
+++ b/cms/sources.py |
@@ -22,17 +22,17 @@ |
from random import randint |
import urlparse |
import logging |
from cms import utils |
class Source: |
- def resolve_link(self, url, locale): |
+ def resolve_link(self, url, locale, source_page=None): |
parsed = urlparse.urlparse(url) |
page = parsed.path |
if parsed.scheme != '' or page.startswith('/') or page.startswith('.'): |
# Not a page link |
return None, None |
if url.startswith('tel:'): |
# Workaround for 'tel' scheme not recognized in Python <=2.7.3. |
@@ -54,17 +54,18 @@ |
if not self.has_locale(locale, page): |
locale = default_locale |
elif self.has_page(alternative_page): |
if not self.has_locale(locale, alternative_page): |
locale = default_locale |
elif self.has_static(page): |
locale = None |
else: |
- logging.warning('Link to %s cannot be resolved', page) |
+ logging.warning('Link to "%s" (from "%s") cannot be resolved', |
+ page, source_page) |
rhowell
2019/04/12 20:17:12
NIT: It might be slightly easier to read the error
Vasily Kuznetsov
2019/04/15 16:48:45
Yeah, makes sense. Done.
|
parts = page.split('/') |
if parts[-1] == default_page: |
page = '/'.join(parts[:-1]) |
if locale: |
path = '/{}/{}'.format(locale, page) |
return locale, urlparse.urlunparse(parsed[0:2] + (path,) + parsed[3:]) |
return locale, '/' + page |