Index: cms/sources.py |
=================================================================== |
--- a/cms/sources.py |
+++ b/cms/sources.py |
@@ -22,39 +22,45 @@ from ConfigParser import SafeConfigParse |
class Source: |
def resolve_link(self, url, locale): |
parsed = urlparse.urlparse(url) |
page = parsed.path |
if parsed.scheme != "" or page.startswith("/") or page.startswith("."): |
# Not a page link |
return None, None |
- if parsed.path == "" and url != "": |
+ if page == "" and url != "": |
# Page-relative link |
return None, None |
+ def has_locale(locale, page): |
+ if config.has_option("locale_overrides", page): |
Sebastian Noack
2015/03/20 09:47:41
I'd prefer to call config.get() without prior chec
Wladimir Palant
2015/03/20 15:42:36
Done.
|
+ page = config.get("locale_overrides", page) |
+ return self.has_locale(locale, page) |
+ |
config = self.read_config() |
default_locale = config.get("general", "defaultlocale") |
default_page = config.get("general", "defaultpage") |
+ alternative_page = "/".join([page, default_page]).lstrip("/") |
- checked_page = page |
- if config.has_option("locale_overrides", page): |
- checked_page = config.get("locale_overrides", page) |
Wladimir Palant
2015/03/19 22:33:53
Sorry about the marginally related changes but thi
|
- |
- if self.has_localizable_file(default_locale, checked_page): |
- if not self.has_localizable_file(locale, checked_page): |
+ if self.has_localizable_file(default_locale, page): |
+ if not self.has_localizable_file(locale, page): |
locale = default_locale |
- elif self.has_page(checked_page): |
- if not self.has_locale(locale, checked_page): |
+ elif self.has_page(page): |
+ if not has_locale(locale, page): |
+ locale = default_locale |
+ elif self.has_page(alternative_page): |
+ if not has_locale(locale, alternative_page): |
locale = default_locale |
else: |
print >>sys.stderr, "Warning: Link to %s cannot be resolved" % page |
- if page == default_page: |
- page = "" |
+ parts = page.split("/") |
+ if parts[-1] == default_page: |
+ page = "/".join(parts[:-1]) |
path = "/%s/%s" % (locale, page) |
return locale, urlparse.urlunparse(parsed[0:2] + (path,) + parsed[3:]) |
def read_config(self): |
configdata = self.read_file("settings.ini") |
config = SafeConfigParser() |
config.readfp(StringIO(configdata)) |