【问题标题】:Cannot import name binary_content from odoo.addons.web.controllers.main odoo 13无法从 odoo.addons.web.controllers.main odoo 13 导入名称 binary_content
【发布时间】:2020-07-18 01:30:20
【问题描述】:

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

现在我,计划将其升级到 Odoo CE 版本 13,但我遇到了这样的错误:

ImportError: cannot import name 'binary_content' from 'odoo.addons.web.controllers.main' (e:\odoo\homing_missile13\addons\web\controllers\main.py)

Traceback (most recent call last):

  File "E:\Odoo\homing_missile13\odoo\http.py", line 624, in _handle_exception

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

  File "E:\Odoo\homing_missile13\odoo\http.py", line 310, in _handle_exception

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

  File "E:\Odoo\homing_missile13\odoo\tools\pycompat.py", line 14, in reraise

    raise value

  File "E:\Odoo\homing_missile13\odoo\http.py", line 669, in dispatch

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

  File "E:\Odoo\homing_missile13\odoo\http.py", line 350, in _call_function

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

  File "E:\Odoo\homing_missile13\odoo\service\model.py", line 93, in wrapper

    return f(dbname, args, *kwargs)

  File "E:\Odoo\homing_missile13\odoo\http.py", line 339, in checked_call

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

  File "E:\Odoo\homing_missile13\odoo\http.py", line 915, in _call_

    return self.method(*args, **kw)

  File "E:\Odoo\homing_missile13\odoo\http.py", line 515, in response_wrap

    response = f(*args, **kw)

  File "e:\odoo\homing_missile13\addons\web\controllers\main.py", line 1326, in call_button

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

  File "e:\odoo\homing_missile13\addons\web\controllers\main.py", line 1314, in _call_kw

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

  File "E:\Odoo\homing_missile13\odoo\api.py", line 387, in call_kw

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

  File "E:\Odoo\homing_missile13\odoo\api.py", line 374, in _call_kw_multi

    result = method(recs, args, *kwargs)

  File "<decorator-gen-60>", line 2, in button_immediate_install

  File "E:\Odoo\homing_missile13\odoo\addons\base\models\ir_module.py", line 72, in check_and_log

    return method(self, args, *kwargs)

  File "E:\Odoo\homing_missile13\odoo\addons\base\models\ir_module.py", line 463, in button_immediate_install

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

  File "E:\Odoo\homing_missile13\odoo\addons\base\models\ir_module.py", line 573, in _button_immediate_function

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

  File "E:\Odoo\homing_missile13\odoo\modules\registry.py", line 86, in new

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

  File "E:\Odoo\homing_missile13\odoo\modules\loading.py", line 423, in load_modules

    loaded_modules, update_module, models_to_check)

  File "E:\Odoo\homing_missile13\odoo\modules\loading.py", line 315, in load_marked_modules

    perform_checks=perform_checks, models_to_check=models_to_check

  File "E:\Odoo\homing_missile13\odoo\modules\loading.py", line 182, in load_module_graph

    load_openerp_module(package.name)

  File "E:\Odoo\homing_missile13\odoo\modules\module.py", line 382, in load_openerp_module

    __import__('odoo.addons.' + module_name)

  File "e:\odoo\homing_missile13\custom_addons\sync_documents\__init__.py", line 5, in <module>

    from . import controllers

  File "e:\odoo\homing_missile13\custom_addons\sync_documents\controllers\__init__.py", line 4, in <module>

    from . import main

  File "e:\odoo\homing_missile13\custom_addons\sync_documents\controllers\main.py", line 9, in <module>

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

ImportError: cannot import name 'binary_content' from 'odoo.addons.web.controllers.main' (e:\odoo\homing_missile13\addons\web\controllers\main.py).


By looking at the code i saw the file main.py has some code which is obsoleted (i reckon) in version 13 >

from odoo.addons.web.controllers.main import binary_content
from odoo.addons.http_routing.models.ir_http import slug

那么你们能帮帮我吗?

在 Odoo CE 版本 13 中 binary_content 的替换是什么?

与蛞蝓相同的问题。

除此之外,Pycharm 还在 odoo.addons.web 和 odoo.addons.http_routing 处显示错误。

非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: python odoo


    【解决方案1】:

    是的,Odoo-13 发生了变化。

    您可以导入并使用此函数content_imageslug可以用于“将字符串转换为可在URL路径中使用的字符串”,您的函数用于binary类型的内容操作。

    谢谢

    【讨论】:

    • 感谢您的提示,在 Odoo 14 中使用 conent_image 为我解决了这个问题。但在导入时我必须使用from odoo.addons.web.controllers.main import Binary & 然后在代码中:Binary.content_image
    【解决方案2】:

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

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

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

    &在代码中:

    Binary.content_imageDipen in this answer 所述。


    另外,发现另一个有趣的事情,如提到的 in this link,由 Niyas Raphy 回答,而不是导入 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')

    【讨论】:

      猜你喜欢
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2020-09-22
      • 2021-12-04
      • 2021-05-30
      • 2021-11-07
      • 2021-03-07
      相关资源
      最近更新 更多