[FIX] ir.qweb: t-lang had no effect anymore, e.g. when printing reports
Setting the env of the qwebcontext is not sufficient because the closure
of the `loader` carries its own contexts and lang, so subsequent t-calls
may still use the original language.
This was broken by the new API conversion at commit
4ddc323139,
and further broken by the forward-port
6c8141a1dfa9fa44067d052b368e3851972d836cA with a wrongly indented line.
This commit is contained in:
@@ -75,7 +75,7 @@ class FileSystemLoader(object):
|
||||
if name:
|
||||
yield name
|
||||
|
||||
def __call__(self, name):
|
||||
def __call__(self, name, env=None):
|
||||
for node in self.doc:
|
||||
if node.get('t-name') == name:
|
||||
root = etree.Element('templates')
|
||||
@@ -161,7 +161,7 @@ class QWeb(models.AbstractModel):
|
||||
def get_template(self, name, qwebcontext):
|
||||
origin_template = qwebcontext.get('__caller__') or qwebcontext['__stack__'][0]
|
||||
try:
|
||||
document = qwebcontext.loader(name)
|
||||
document = qwebcontext.loader(name, env=qwebcontext.env)
|
||||
except ValueError:
|
||||
raise_qweb_exception(QWebTemplateNotFound, message="Loader could not find template %r" % name, template=origin_template)
|
||||
|
||||
@@ -439,7 +439,7 @@ class QWeb(models.AbstractModel):
|
||||
lang_eval = lang
|
||||
lang = qwebcontext.get('res_company') and qwebcontext['res_company'].partner_id.lang or 'en_US'
|
||||
_logger.info("'%s' is not a valid language code, is an empty field or is not installed, falling back to %s", lang_eval, lang)
|
||||
d.env = d.env(context=dict(d.context, lang=lang))
|
||||
d.env = d.env(context=dict(d.context, lang=lang))
|
||||
|
||||
d[0] = self.render_element(element, template_attributes, generated_attributes, d)
|
||||
|
||||
|
||||
@@ -1028,7 +1028,10 @@ actual arch.
|
||||
return '[]'
|
||||
qcontext['get_modules_order'] = get_modules_order
|
||||
|
||||
return self.env[engine].render(self.id, qcontext, loader=self.read_template)
|
||||
def loader(name, env=self.env):
|
||||
return self.with_env(env).read_template(name)
|
||||
|
||||
return self.env[engine].render(self.id, qcontext, loader=loader)
|
||||
|
||||
#------------------------------------------------------
|
||||
# Misc
|
||||
|
||||
Reference in New Issue
Block a user