gpt4 book ai didi

python - 在 Odoo8 中,如何将模块的 .py 文件导入自定义模块?

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:11 27 4
gpt4 key购买 nike

好的,就到这里了。做好准备。

我正在尝试覆盖位于 Odoo 模块 (account_followup) 中的类 (res_partner) 的方法 (get_followup_table_html) 8、通过创建继承该类并定义和重新定义方法的自定义模块(account_followup_upgrade)。

变化非常小,因为该方法的唯一目的是创建一个 html 表以包含在发送给客户的电子邮件中;我只是复制了原来的方法并修改了html代码部分。

话虽如此,它大部分都有效。我的自定义模块文件夹中的文件包括:

__openerp__.py(不是完整文件,只是重要的部分):

'depends': ['account_followup'],

__init__.py:

 # -*- coding: utf-8 -*-

import mymodule

mymodule.py:

# -*- coding: utf-8 -*-

from openerp.osv import osv

# I need to modify a method in this class
class res_partner(osv.osv):
# So I inherit it
_inherit = 'res.partner'

# And define a method called the same as the original, with the same arguments
def get_followup_table_html(self, cr, uid, ids, context=None):

"""
Build the html tables to be included in emails send to partners,
when reminding them their overdue invoices.
:param ids: [id] of the partner for whom we are building the tables
:rtype: string
"""

try:
from report import account_followup_print
except ImportError:
return 'import failed'

# The code that follows generates an html table
assert len(ids) == 1
if context is None:
context = {}
partner = self.browse(cr, uid, ids[0], context=context).commercial_partner_id
#copy the context to not change global context. Overwrite it because _() looks for the lang in local variable 'context'.
#Set the language to use = the partner language
context = dict(context, lang=partner.lang)
followup_table = ''
if partner.unreconciled_aml_ids:
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
current_date = fields.date.context_today(self, cr, uid, context=context)
rml_parse = account_followup_print.report_rappel(cr, uid, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(partner, company.id)

for currency_dict in final_res:
currency = currency_dict.get('line', [{'currency_id': company.currency_id}])[0]['currency_id']
# My changes start here
followup_table += '''
<table border="0" width=100%>
<tr style="background-color:#ea6153;color:White">
<td><b>''' + _("Invoice Date") + '''</b></td>
<td><b>''' + _("Description") + '''</b></td>
<td><b>''' + _("Due Date") + '''</b></td>
<td><b>''' + _("Amount") + " (%s)" % (currency.symbol) + '''</b></td>
</tr>
'''
total = 0
strbegin = "<TD>"
strend = "</TD>"
empty_cell = strbegin + strend
for aml in currency_dict['line']:
date = aml['date_maturity'] or aml['date']
if date <= current_date and aml['balance'] > 0:
total += aml['balance']
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['name'] + strend + strbegin + str(date) + strend + strbegin + '{0:.2f}'.format(aml['balance']) + strend + "</TR>"

#total = reduce(lambda x, y: x+y['balance'], currency_dict['line'], 0.00)
followup_table +='''<TR style="background-color:#e9e9e9">''' + empty_cell + empty_cell + strbegin +"<B>TOTAL</B>" + strend + strbegin + "<B>" + '{0:.2f}'.format(total) + "</B>" + strend + "</TR>"
followup_table +="</table>"

return followup_table

现在,我知道该模块正在工作,因为我在电子邮件中收到“导入错误”,它实际上覆盖了原始方法(否则我会得到一个工作的,如果丑陋的 html 表)。问题是导入:

from report import account_followup_print

这个文件account_followup_print.py位于原始account_followup模块中的report文件夹内,我不知道如何导入它(或继承它)。我需要它,因为它在 html 表生成期间被调用一次...

如何从我的自定义模块引用此文件?

我知道这是一面文字墙,所以感谢您的阅读!

最佳答案

要导入它,请使用完整路径

from openerp.addons.account_followup.report import account_followup_print

我认为这会起作用,但如果不改变一点点它就会起作用您需要指定模型报告的完整路径也看看这个问题:

Odoo overwrite inherited method

关于python - 在 Odoo8 中,如何将模块的 .py 文件导入自定义模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47687141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com