可替代odoo-14中的render_qweb_pdf



我想将我的pdf报告保存为附件,这样我就可以从该报告中制作一些附件的zip文件。

pdf = self.env.ref('module_name..report_id').render_qweb_pdf(self.ids)
b64_pdf = base64.b64encode(pdf[0])
# save pdf as attachment
name = "My Attachment"
return self.env['ir.attachment'].create({
'name': name,
'type': 'binary',
'datas': b64_pdf,
'datas_fname': name + '.pdf',
'store_fname': name,
'res_model': self._name,
'res_id': self.id,
'mimetype': 'application/x-pdf'
})

我从这里得到了这个适用于odoo 13.0版本的解决方案,但在odoo 14.0版本中效果不太好。上面说


Odoo Server Error
Traceback (most recent call last):
File "/home/admin/odoo/odoo-14/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/home/admin/odoo/odoo-14/odoo/http.py", line 683, in dispatch
result = self._call_function(**self.params)
File "/home/admin/odoo/odoo-14/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/admin/odoo/odoo-14/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/admin/odoo/odoo-14/odoo/http.py", line 347, in checked_call
result = self.endpoint(*a, **kw)
File "/home/admin/odoo/odoo-14/odoo/http.py", line 912, in __call__
return self.method(*args, **kw)
File "/home/admin/odoo/odoo-14/odoo/http.py", line 531, in response_wrap
response = f(*args, **kw)
File "/home/admin/odoo/odoo-14/addons/web/controllers/main.py", line 1733, in run
result = action.run()
File "/home/admin/odoo/odoo-14/odoo/addons/base/models/ir_actions.py", line 629, in run
res = runner(run_self, eval_context=eval_context)
File "/home/admin/odoo/odoo-14/addons/website/models/ir_actions.py", line 61, in _run_action_code_multi
res = super(ServerAction, self)._run_action_code_multi(eval_context)
File "/home/admin/odoo/odoo-14/odoo/addons/base/models/ir_actions.py", line 498, in _run_action_code_multi
safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True)  # nocopy allows to return 'action'
File "/home/admin/odoo/odoo-14/odoo/tools/safe_eval.py", line 346, in safe_eval
raise ValueError('%s: "%s" while evaluatingn%r' % (ustr(type(e)), ustr(e), expr))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/admin/odoo/odoo-14/odoo/http.py", line 639, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/admin/odoo/odoo-14/odoo/http.py", line 315, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: <class 'AttributeError'>: "'ir.actions.report' object has no attribute 'render_qweb_pdf'" while evaluating
"action = env['wgs.form.1721.a1.list'].generate_attachments(env.context.get('active_ids'))"

我在不同的网站上尝试过类似的解决方案,但它产生了与此类似的结果。请帮忙。我认为这在odoo-14中是新的。我也是奥多开发的新手,所以我对不太了解

pdf = self.env.ref('module_name..report_id')._render_qweb_pdf(self.ids)

您必须像这样放置_render_qweb_pdf。

def action_get_attachment(self):
pdf = self.env.ref('project2.tr_cetificate_action_id')._render_qweb_pdf(self.ids)
b64_pdf = base64.b64encode(pdf[0])
name = "My Attachment"
return self.env['ir.attachment'].create({
'name': name,
'type': 'binary',
'datas': b64_pdf,
# 'datas_fname': name + '.pdf',
'store_fname': name,
'res_model': self._name,
'res_id': self.id,
'mimetype': 'application/x-pdf'
})

此代码将在版本14中工作。

最新更新