From e6f8e672ff95fb46ae38851e9093795cbd830361 Mon Sep 17 00:00:00 2001 From: Vit Ivanov Date: Thu, 13 Aug 2015 19:37:23 +0600 Subject: [PATCH] `as` syntax for `sitetree_page_title` tag --- sitetree/sitetreeapp.py | 2 ++ sitetree/templatetags/sitetree.py | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/sitetree/sitetreeapp.py b/sitetree/sitetreeapp.py index 2512678f..96632f70 100644 --- a/sitetree/sitetreeapp.py +++ b/sitetree/sitetreeapp.py @@ -595,6 +595,8 @@ def url(self, sitetree_item, context=None): self.update_cache_entry_value('urls', cache_key, {url_pattern: (resolved_url, sitetree_item)}) + + if self.is_locale_patterns_used(): language_from_path = get_language_from_path(resolved_url) if not language_from_path: diff --git a/sitetree/templatetags/sitetree.py b/sitetree/templatetags/sitetree.py index 6b8c172e..9c48dd55 100644 --- a/sitetree/templatetags/sitetree.py +++ b/sitetree/templatetags/sitetree.py @@ -146,10 +146,9 @@ def sitetree_url(parser, token): """ tokens = token.contents.split() - tokens_num = len(tokens) as_var = False - if tokens_num >= 3 and tokens[1] == 'for': + if len(tokens) >= 3 and tokens[1] == 'for': if tokens[-2] == 'as': as_var = tokens[-1] tokens = tokens[:-2] @@ -163,10 +162,14 @@ def sitetree_url(parser, token): def sitetree_page_title(parser, token): """Renders a title for current page, resolved against sitetree item representing current URL.""" tokens = token.split_contents() + as_var = False - if len(tokens) == 3: + if len(tokens) >= 3 and tokens[1] == 'from': + if tokens[-2] == 'as': + as_var = tokens[-1] + tokens = tokens[:-2] tree_alias = parser.compile_filter(tokens[2]) - return sitetree_page_titleNode(tree_alias) + return sitetree_page_titleNode(tree_alias, as_var) else: raise template.TemplateSyntaxError( '%r tag requires two arguments. E.g. {%% sitetree_page_title from "mytree" %%}.' % tokens[0]) @@ -276,12 +279,16 @@ def render(self, context): class sitetree_page_titleNode(template.Node): """Renders a page title from the specified site tree.""" - def __init__(self, tree_alias): + def __init__(self, tree_alias, as_var): self.tree_alias = tree_alias + self.as_var = as_var def render(self, context): - return sitetree.get_current_page_title(self.tree_alias, context) - + page_title = sitetree.get_current_page_title(self.tree_alias, context) + if self.as_var: + context[self.as_var] = page_title + return '' + return page_title class sitetree_page_descriptionNode(template.Node): """Renders a page description from the specified site tree."""