无法从odoo.addons.web.controllers.main odoo 13导入名称binary_content。

时间:2020-04-06 04:59:42

标签: python odoo

我从Odoo Apps网站购买了一个与Odoo CE版本12兼容的模块。

现在,我打算将其升级到Odoo CE版本13,而我正面临着这样的错误:

ImportError:无法从“ odoo.addons.web.controllers.main”(例如:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py)中导入名称“ binary_content”

回溯(最近通话最近一次):

文件_handle_exception中的“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”行624

return super(JsonRequest, self)._handle_exception(exception)

文件_handle_exception中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”

raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])

第14行的文件“ E:\ Odoo \ homing_missile13 \ odoo \ tools \ pycompat.py”

raise value

文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”在第669行中发送

result = self._call_function(**self.params)

文件_call_function中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”

return checked_call(self.db, args, *kwargs)

包装中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ service \ model.py”,第93行

return f(dbname, args, *kwargs)

checked_call中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”,第339行

result = self.endpoint(*a, **kw)

调用

中,文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”第915行
return self.method(*args, **kw)

文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”,第515行,位于response_wrap中

response = f(*args, **kw)

在呼叫按钮中的文件“ e:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py”,行1326

action = self._call_kw(model, method, args, kwargs)

_call_kw中的文件“ e:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py”,行1314

return call_kw(request.env[model], method, args, kwargs)

call_kw中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ api.py”,行

result = _call_kw_multi(method, model, args, kwargs)

_call_kw_multi中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ api.py”,第374行

result = method(recs, args, *kwargs)

“ _ mediamediate_install”中第2行的文件“”,

文件“ E:\ Odoo \ homing_missile13 \ odoo \ addons \ base \ models \ ir_module.py”,第72行,在check_and_log中

return method(self, args, *kwargs)

在button_immediate_install中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ addons \ base \ models \ ir_module.py”,第463行

return self._button_immediate_function(type(self).button_install)

文件“ E:\ Odoo \ homing_missile13 \ odoo \ addons \ base \ models \ ir_module.py”,第573行,位于_button_immediate_function中

modules.registry.Registry.new(self._cr.dbname, update_module=True)

文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ registry.py”,第86行,位于新的

odoo.modules.load_modules(registry._db, force_demo, status, update_module)

文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ loading.py”,第423行,位于load_modules中

loaded_modules, update_module, models_to_check)

文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ loading.py”,第315行,位于load_marked_modules中

perform_checks=perform_checks, models_to_check=models_to_check

文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ loading.py”,第182行,位于load_module_graph中

load_openerp_module(package.name)

在load_openerp_module中的行382中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ module.py”

__import__('odoo.addons.' + module_name)

中的第5行,文件“ e:\ odoo \ homing_missile13 \ custom_addons \ sync_documents__init __。py”
from . import controllers

文件

中的第4行,文件“ e:\ odoo \ homing_missile13 \ custom_addons \ sync_documents \ controllers__init __。py”
from . import main

文件

中的第9行,文件“ e:\ odoo \ homing_missile13 \ custom_addons \ sync_documents \ controllers \ main.py”
from odoo.addons.web.controllers.main import binary_content

ImportError:无法从“ odoo.addons.web.controllers.main”(例如:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py)中导入名称“ binary_content”。

通过查看代码,我看到文件main.py的某些代码在版本13中已作废(我认为)>

从odoo.addons.web.controllers.main

导入binary_content 来自odoo.addons.http_routing.models.ir_http导入段

那么你能帮助我吗?

Odoo CE版本13中binary_content的替代品是什么?

同样的问题。

除此之外,Pycharm还显示了odoo.addons.web和odoo.addons.http_routing上的错误。

任何帮助都很有用。

谢谢

2 个答案:

答案 0 :(得分:2)

是的,Odoo-13有所更改。

您可以导入和使用此功能content_imageslug可用于“将字符串转换为可在URL路径中使用的字符串”,而您的功能则用于binary键入内容操作。

谢谢

答案 1 :(得分:0)

只是为 Odoo 14 添加此答案,因为我找不到与版本 14 相关的任何内容。

就我而言,我必须像这样导入:

from odoo.addons.web.controllers.main import Binary

& 在代码中:

Binary.content_imageDipen in this answer 所述。


另外,发现另一个有趣的事情,如 Niyas Raphy 所提到的 in this link,我也可以使用 binary_content,而不是导入 request.env['ir.http'].sudo().binary_content(

查看 V13 中的一个用例: status, headers, _content = request.env['ir.http'].sudo().binary_content( model='res.partner', id=partner_id, field='image_128', default_mimetype='image/png')