Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: cms/converters.py

Issue 29469568: Issue 5331 - Adds has_string() global (Closed)
Patch Set: add protected _get_localdata method and imprve tests Created June 21, 2017, 9:24 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/expected_output/global » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cms/converters.py
===================================================================
--- a/cms/converters.py
+++ b/cms/converters.py
@@ -376,16 +376,17 @@
filters = {
'translate': self.translate,
'linkify': self.linkify,
'toclist': self.toclist,
}
globals = {
'get_string': self.get_string,
+ 'has_string': self.has_string,
'get_page_content': self.get_page_content,
}
for dirname, dictionary in [('filters', filters),
('globals', globals)]:
for filename in self._params['source'].list_files(dirname):
root, ext = os.path.splitext(filename)
if ext.lower() != '.py':
@@ -402,16 +403,19 @@
' in {}'.format(name, path))
self._env = jinja2.Environment(
loader=SourceTemplateLoader(self._params['source']),
autoescape=True)
self._env.filters.update(filters)
self._env.globals.update(globals)
+ def _get_locale_data(self, page):
+ return self._params['source'].read_locale(self._params['locale'], page)
+
def get_html(self, source, filename):
env = self._env
code = env.compile(source, None, filename)
template = jinja2.Template.from_code(env, code, env.globals)
try:
module = template.make_module(self._params)
except Exception:
@@ -430,23 +434,29 @@
self._params['page'], name, default, comment,
self._params['localedata'], html_escapes
))
def get_string(self, name, page=None):
if page is None:
page = self._params['page']
- localedata = self._params['source'].read_locale(self._params['locale'],
- page)
+ localedata = self._get_locale_data(page)
default = localedata[name]
return jinja2.Markup(self.localize_string(
page, name, default, '', localedata, html_escapes
))
+ def has_string(self, name, page=None):
+ if page is None:
+ page = self._params['page']
+
+ localedata = self._get_locale_data(page)
+ return name in localedata
+
def get_page_content(self, page, locale=None):
from cms.utils import get_page_params
if locale is None:
locale = self._params['locale']
return get_page_params(self._params['source'], locale, page)
def linkify(self, page, locale=None, **attrs):
« no previous file with comments | « no previous file | tests/expected_output/global » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld