无法在Webkit报告Openerp中调用python函数

时间:2014-02-18 09:02:57

标签: python webkit openerp openerp-7

我的报告文件包含

class AccountInvoice_Report(report_sxw.rml_parse):

    def __init__(self, cr, uid, name, context):

        super(AccountInvoice_Report, self).__init__(cr, uid, name, context=context)

        self.localcontext.update({

        'time': time,
        'cr':cr,
        'uid': uid,
        'get_address': self.get_address,
    })

我写了get_address函数。当我在我的mako文件中调用该函数时

    <% get_address() %>

然后它将错误视为

   File "memory:0xb23c67ccL", line 208, in render_body
   <% get_address()%>
   TypeError: 'Undefined' object is not callable

我正在做什么错误的文件定义或调用函数。

4 个答案:

答案 0 :(得分:0)

<强> my_parser.py

import time
from openerp.report import report_sxw

class AccountInvoice_Report(report_sxw.rml_parse):

    def __init__(self, cr, uid, name, context):
        super(AccountInvoice_Report, self).__init__(cr, uid, name, context=context)
        self.localcontext.update({
                                  'time': time,
                                  'cr':cr,
                                  'uid': uid,
                                  'get_address': self.get_address,})
    def get_address(self):
        #your code
        return 'address'

report_sxw.report_sxw('report.your_report_name', 'model', 'path/to/mako', parser=AccountInvoice_Report)

__init__.py

中加入此解析器
import my_parser

也不要忘记在主__init__.py

中导入您的报告文件夹

答案 1 :(得分:0)

还尝试重新启动IDE /服务器。这个对我有用。有时您可以在同一时间运行许多实例。

答案 2 :(得分:0)

在:

report_sxw.report_sxw('report.your_report_name', 'model', 'path/to/mako', parser=AccountInvoice_Report)

您应该确保您的 your_report_name &#39;与字段&quot; report_name&#39;相同在模型&#39; ir.actions.report.xml&#39; (您配置报告的地方)。

函数report_sxw.report_sxw()无法找到&#39; report_name&#39;用于链接解析器的报告。

答案 3 :(得分:0)

这是一个古老的问题,但也许有人可以利用这一点。我已经使用了您尝试的方法,以下代码在6.0上为我工作: 在 init 而不是

'get_address': self.get_address,})

我用过:

'get_address': self.get_address(),})

然后我将我的方法声明为:

def get_address(self):

最后在我的mako上,我打电话给:

${get_address}

请注意,在mako文件中,我没有使用&#39; get_address()&#39;因为它向我发送了一个错误,指出字符串get_address不是可调用对象。希望它有所帮助。