2016-10-29 6 views
1

Я случайно удалил шаблон электронной почты уведомления, но, к счастью, у меня есть резервная копия для восстановления. На самом деле я хотел внести некоторые изменения в тело шаблона электронной почты. Но после этого я получаю исключение при отправке электронной почты, а также в предварительном просмотре шаблона электронной почты в короткие сроки при рендеринге шаблонов. Я также попытался удалить все изменения тела шаблона электронной почты, чтобы узнать, являются ли изменения причиной проблемы или нет, но все же ошибка. Поскольку исключение говорит о том, что шаблон не может найти атрибут button_access, при дальнейшем изучении его я обнаружил, что это просто простое значение, указанное в контексте шаблона по сценарию see here.Caught UndefinedError: «openerp.tools.misc.frozendict object» не имеет атрибута «button_access», а рендеринг шаблона электронной почты в odoo

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

Хорошо, вот как я решил эту проблему.

На самом деле Кажется, что шаблон уведомления Notification Email (который является шаблоном по умолчанию, сгенерированным базовыми классами) зависит от некоторых ссылочных переменных, которые, скорее всего, хранятся в ir_model_data, поэтому, когда я случайно удалил его и воссоздал из резервной копии csv, его идентификатор изменился и, ссылки переменных в модели данных, т.е. ir_model_data, также перестают работать. Чтобы воссоздать эти контрольные переменные, я сначала попытался просто перезапустить сервер, но, к сожалению, не удался, тогда я переустановил базовые модули, чтобы воссоздать ссылочные переменные. Для этого я побежал сервер odoo как:

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

Что это делает команду серверу, чтобы обновить все модули. Примечание: У меня есть свежий экземпляр odoo без какой-либо настройки, эта команда может вызвать некоторые неудобства для других случаев. Поэтому вас предупредили.