| Index: cms/utils.py |
| diff --git a/cms/utils.py b/cms/utils.py |
| index 66d8498f74582a93b1fff3ccac87879d2877654b..9199e322d9fa942ddeb97e6f93cb018739edeaaa 100644 |
| --- a/cms/utils.py |
| +++ b/cms/utils.py |
| @@ -15,6 +15,8 @@ |
| # You should have received a copy of the GNU General Public License |
| # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| +import re |
| + |
| from cms.converters import converters, TemplateConverter |
| def get_page_params(source, locale, page, format=None, site_url_override=None, |
| @@ -35,6 +37,7 @@ def get_page_params(source, locale, page, format=None, site_url_override=None, |
| "pagedata": source.read_page(page, format), |
| "config": source.read_config(), |
| "localized_string_callback": localized_string_callback, |
| + "jinja2_inheritence": False |
| } |
| localefile = page |
| @@ -53,9 +56,12 @@ def get_page_params(source, locale, page, format=None, site_url_override=None, |
| except KeyError: |
| raise Exception("Page %s uses unknown format %s" % (page, format)) |
| - # Note: The converter might change some parameters so we can only read in |
| - # template data here. |
| - params["templatedata"] = source.read_template(params["template"]) |
| + if format == "tmpl" and re.search(r"{%\s*extends.+?%}", params["pagedata"][0]): |
| + params["jinja2_inheritence"] = True |
| + else: |
| + # Note: The converter might change some parameters so we can only read in |
| + # template data here. |
| + params["templatedata"] = source.read_template(params["template"]) |
| defaultlocale = params["config"].get("general", "defaultlocale") |
| params["defaultlocale"] = defaultlocale |
| @@ -70,7 +76,11 @@ def get_page_params(source, locale, page, format=None, site_url_override=None, |
| locales.sort() |
| params["available_locales"] = locales |
| - params["head"], params["body"] = converter() |
| + if params["jinja2_inheritence"]: |
| + params["body"] = converter() |
| + else: |
| + params["head"], params["body"] = converter() |
| + |
| if converter.total_translations > 0: |
| params["translation_ratio"] = (1 - |
| float(converter.missing_translations) / converter.total_translations) |
| @@ -81,8 +91,13 @@ def get_page_params(source, locale, page, format=None, site_url_override=None, |
| def process_page(source, locale, page, format=None, site_url_override=None, |
| localized_string_callback=None): |
| - return TemplateConverter( |
| - get_page_params(source, locale, page, format, |
| - site_url_override, localized_string_callback), |
| - key="templatedata" |
| - )() |
| + page_params = get_page_params(source, locale, page, format, |
| + site_url_override, localized_string_callback) |
| + |
| + if page_params["jinja2_inheritence"]: |
| + return page_params["body"] |
| + else: |
| + return TemplateConverter( |
| + page_params, |
| + key="templatedata" |
| + )() |