捕获UndefinedError:' openerp.tools.misc.frozendict对象'没有属性' button_access'而在odoo中的电子邮件模板渲染

时间:2016-10-29 20:57:27

标签: python openerp odoo-9

我不小心删除了通知电子邮件模板但幸运的是我有备份还原。实际上我想在电子邮件模板正文中进行一些更改。但在此之后,我在电子邮件发送以及模板渲染中的电子邮件模板预览中遇到异常。 我还尝试删除所有电子邮件模板正文更改,以查看更改是否导致问题,但仍然是错误。例外情况是模板无法找到button_access属性,在进一步研究它时,我发现它只是简单的dict值,包含在脚本see here的模板上下文中。

2016-10-29 19:33:41,391 3804 INFO wtm_ent_imp openerp.addons.mail.models.mail_template: Failed to render template <Template memory:7f89923cc090> using values {'format_tz': <function <lambda> at 0x7f8979e8f9b0>, 'ctx': {u'lang': u'en_US', u'tz': u'Asia/Karachi', u'uid': 1, u'active_model': u'mail.template', 'safe': False, u'params': {u'action': 100}, u'search_disable_custom_filters': True, u'active_ids': [1], u'template_id': 1, u'active_id': 1}, 'user': res.users(1,), 'object': mail.message(8832,)}
Traceback (most recent call last):
  File "/home/odoo/odoo-server/addons/mail/models/mail_template.py", line 364, in render_template
    render_result = template.render(variables)
  File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python2.7/dist-packages/jinja2/sandbox.py", line 307, in getitem
    return obj[argument]
UndefinedError: 'openerp.tools.misc.frozendict object' has no attribute 'button_access'

1 个答案:

答案 0 :(得分:1)

好的,我是如何解决这个问题的。

实际上,通知电子邮件模板(基类生成的默认模板)似乎依赖于最有可能存储在ir_model_data中的一些引用变量,所以当我意外删除它并从csv backup重新创建时,其id已更改,因此引用数据模型中的变量,即ir_model_data也不再可行。要重新创建这些引用变量,我首先尝试重新启动服务器,但遗憾的是没有成功,然后重新安装基本模块以重新创建引用变量。为此,我将odoo服务器运行为:

$ odoo.py -c odoo.conf -u all

这样做是指示服务器更新所有模块。 注意:我有新的odoo实例,没有任何自定义,这个命令可能会给其他情况带来一些不便。所以你被警告了。