【问题标题】:How to import a Python pure class declared in a third-party module in Odoo?如何导入在Odoo第三方模块中声明的Python纯类?
【发布时间】:2021-06-18 14:44:51
【问题描述】:

我已经从名为 mis-builder 的 Odoo 社区协会存储库中安装了模块 mis_builder

在该模块中,定义了一个不符合 Odoo 标准的纯 Python 类:

class AccountingExpressionProcessor(object):

    ...

    def get_aml_domain_for_expr(self, expr, date_from, date_to, target_move, account_id=None):
        ...

问题是我需要创建一个自定义模块来覆盖方法get_aml_domain_for_expr,定义在类AccountingExpressionProcessor中。

所以在我的模块中,我想导入 AccountingExpressionProcessor 类。我的问题是:

在我的 Python 文件中导入该类的最佳方法是什么?

我这样做了:

import imp

aep = imp.load_source(
    'mis_builder.AccountingExpressionProcessor',
    '/my/absolute/path/to/mis-builder/mis_builder/models/aep.py'
)

然后尝试以这种方式从导入的类继承:

class AccountingExpressionProcessor(aep.AccountingExpressionProcessor):

此解决方案不起作用。除此之外,我不想指定绝对路径,因为每个 Odoo 实例都有自己的路径。

我尝试了很多东西都没有结果。我使用的是 Python 2.7,因为它是 Odoo 10。有谁知道一个好的解决方案吗?

【问题讨论】:

    标签: python python-2.7 odoo odoo-10


    【解决方案1】:

    我不确定它是否适合您,但我有一个 ODOO 实现相同的示例。

    from odoo.addons.account_taxcloud.models.taxcloud_request import TaxCloudRequest
    

    这里的代码继承了 account_taxcloud(module) + taxcloud_request(py 文件) 然后使用方法:

    class TaxCloudRequest(TaxCloudRequest):
    
        def set_order_items_detail(self, order):
    

    请检查它是否适合您。如果您找到任何解决方案,也请更新。

    【讨论】:

    • 这是我尝试的第一件事,但可能是我忘记了路径中的某个目录,因为现在我再次尝试并且它有效。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 2023-04-01
    • 2017-10-18
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多