| Index: cms/sources.py |
| =================================================================== |
| --- a/cms/sources.py |
| +++ b/cms/sources.py |
| @@ -32,36 +32,29 @@ class Source: |
| if parsed.scheme != "" or page.startswith("/") or page.startswith("."): |
| # Not a page link |
| return None, None |
| if page == "" and url != "": |
| # Page-relative link |
| return None, None |
| - def has_locale(locale, page): |
| - try: |
| - page = config.get("locale_overrides", page) |
| - except ConfigParser.Error: |
| - pass |
| - 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("/") |
| if self.has_localizable_file(default_locale, page): |
| if not self.has_localizable_file(locale, page): |
| locale = default_locale |
| elif self.has_page(page): |
| - if not has_locale(locale, page): |
| + if not self.has_locale(locale, page): |
| locale = default_locale |
| elif self.has_page(alternative_page): |
| - if not has_locale(locale, alternative_page): |
| + if not self.has_locale(locale, alternative_page): |
| locale = default_locale |
| else: |
| logging.warning("Link to %s cannot be resolved", page) |
| parts = page.split("/") |
| if parts[-1] == default_page: |
| page = "/".join(parts[:-1]) |
| @@ -152,18 +145,20 @@ class Source: |
| for filename in self.list_files("locales"): |
| if "/" in filename: |
| locale, path = filename.split("/", 1) |
| result.add(locale) |
| return result |
| def has_locale(self, locale, page): |
| config = self.read_config() |
| - if config.has_option("locale_overrides", page): |
| + try: |
| page = config.get("locale_overrides", page) |
| + except ConfigParser.Error: |
| + pass |
| return self.has_file(self.locale_filename(locale, page)) |
| def read_locale(self, locale, page): |
| default_locale = self.read_config().get("general", "defaultlocale") |
| if locale == default_locale: |
| result = {} |
| else: |
| result = dict(self.read_locale(default_locale, page)) |