如何在 Odoo 中导入在第三方模块中声明的 Python 纯 class?
How to import a Python pure class declared in a third-party module in Odoo?
我已经从名为 mis-builder.[=18 的 Odoo 社区协会存储库安装了模块 mis_builder =]
在该模块中,有一个纯粹的 Python class 定义,超出 Odoo 标准:
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
,在 class AccountingExpressionProcessor
.
中定义
所以在我的模块中,我想导入 AccountingExpressionProcessor
class。我的问题是:
在我的 Python 文件中导入 class 的最佳方法是什么?
我这样做了:
import imp
aep = imp.load_source(
'mis_builder.AccountingExpressionProcessor',
'/my/absolute/path/to/mis-builder/mis_builder/models/aep.py'
)
然后尝试以这种方式从导入的 class 继承:
class AccountingExpressionProcessor(aep.AccountingExpressionProcessor):
此解决方案无效。除此之外,我不想指定绝对路径,因为每个 Odoo 实例都有自己的路径。
我试了很多东西都没有结果。我正在使用 Python 2.7,因为它是 Odoo 10。有谁知道一个好的解决方案吗?
我不确定它是否适合你,但我有一个 ODOO 实现相同的例子。
from odoo.addons.account_taxcloud.models.taxcloud_request import TaxCloudRequest
这里的代码继承了account_taxcloud(模块)+taxcloud_request(py文件)
然后使用方法:
class TaxCloudRequest(TaxCloudRequest):
def set_order_items_detail(self, order):
请检查它是否适合您。如果您找到任何解决方案,也请更新。
我已经从名为 mis-builder.[=18 的 Odoo 社区协会存储库安装了模块 mis_builder =]
在该模块中,有一个纯粹的 Python class 定义,超出 Odoo 标准:
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
,在 class AccountingExpressionProcessor
.
所以在我的模块中,我想导入 AccountingExpressionProcessor
class。我的问题是:
在我的 Python 文件中导入 class 的最佳方法是什么?
我这样做了:
import imp
aep = imp.load_source(
'mis_builder.AccountingExpressionProcessor',
'/my/absolute/path/to/mis-builder/mis_builder/models/aep.py'
)
然后尝试以这种方式从导入的 class 继承:
class AccountingExpressionProcessor(aep.AccountingExpressionProcessor):
此解决方案无效。除此之外,我不想指定绝对路径,因为每个 Odoo 实例都有自己的路径。
我试了很多东西都没有结果。我正在使用 Python 2.7,因为它是 Odoo 10。有谁知道一个好的解决方案吗?
我不确定它是否适合你,但我有一个 ODOO 实现相同的例子。
from odoo.addons.account_taxcloud.models.taxcloud_request import TaxCloudRequest
这里的代码继承了account_taxcloud(模块)+taxcloud_request(py文件) 然后使用方法:
class TaxCloudRequest(TaxCloudRequest):
def set_order_items_detail(self, order):
请检查它是否适合您。如果您找到任何解决方案,也请更新。