Openerp 从向导运行报告
我有一个带按钮的向导。在按钮操作中,我想运行一个报告并将PDF保留在服务器上。我有上面使用web服务创建报告的代码片段。但是在向导上下文中,我通常只有uid(我想) 在向导中,将报告获取到磁盘的等效方法是什么Openerp 从向导运行报告,openerp,Openerp,我有一个带按钮的向导。在按钮操作中,我想运行一个报告并将PDF保留在服务器上。我有上面使用web服务创建报告的代码片段。但是在向导上下文中,我通常只有uid(我想) 在向导中,将报告获取到磁盘的等效方法是什么 def reportToDisk(self, cr, uid, ids, context=None): dbname = 'db' username = 'user' pwd = 'pass' model = 'sale.order' report
def reportToDisk(self, cr, uid, ids, context=None):
dbname = 'db'
username = 'user'
pwd = 'pass'
model = 'sale.order'
report_name = 'doc.sale'
sock_common = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)
sock = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/object')
ids = sock.execute(dbname, uid, pwd, model, 'search',[])[0:1]
sock_report = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/report')
id_report = sock_report.report(
dbname, uid, pwd, report_name, ids,{'model': model, 'id': ids[0], 'report_type':'pdf'}
)
cont = True
while cont:
report = sock_report.report_get(dbname, uid, pwd, id_report)
cont = not report['state']
string_pdf = base64.decodestring(report['result'])
file_pdf = open('/home/arch-in/file.pdf','w')
file_pdf.write(string_pdf)
file_pdf.close()
在单击按钮时返回报告操作(可以是向导按钮或查看按钮,仅与单击按钮返回一起使用),如下所示:
def btn_clik_action(self, cr, uid, ids, context=None):
if context == None:
context = {}
value = {
'type': 'ir.actions.report.xml',
'report_name':'report.name.(servicename)',
'datas': {
'model':'model.name',
'id': ids and ids[0] or False,
'ids': ids and ids or [],
'report_type': 'pdf'
},
'nodestroy': True
}
只需返回报告操作,就可以得到报告的文件,基本上不需要编写或做任何事情
谢谢您单击按钮返回报告操作(它可以是向导按钮或查看按钮,它只与单击按钮返回一起工作),如下所示:
def btn_clik_action(self, cr, uid, ids, context=None):
if context == None:
context = {}
value = {
'type': 'ir.actions.report.xml',
'report_name':'report.name.(servicename)',
'datas': {
'model':'model.name',
'id': ids and ids[0] or False,
'ids': ids and ids or [],
'report_type': 'pdf'
},
'nodestroy': True
}
只需返回报告操作,就可以得到报告的文件,基本上不需要编写或做任何事情
谢谢当您的代码已经在服务器内部运行时,为什么要对服务器使用xmlrpc调用?我不会,但这是一个正在运行的代码示例。我问的是如何在服务器内部执行。可能重复的是,当您的代码已经在服务器内部运行时,为什么要使用对服务器的xmlrpc调用?我不会,但这是一个正在运行的代码示例。我在问如何在服务器内部进行。可能的重复会给我一个OpenERP one报告的输出,但我想找回一个PDF文件,该文件可能是另一个非OpenERP过程生成的。@petermm:它确实会返回PDF文件,您将保存在浏览器的下载文件夹中。这将为我提供OpenERP one报告的输出,但我想找回一个PDF文件,该文件可能是另一个非OpenERP过程生成的。@petermm:它确实会返回PDF文件,您将保存在浏览器的下载文件夹中。