我在OpenERP
中有一个生成CSV
文件的python方法。我的问题是如何设置CSV的默认路径是本地路径,而不是服务器上的路径。
我的代码的一部分有with open('export_data.csv', 'wb') as csvfile:
。它将文件保存在服务器上。我希望将文件保存在客户端位置。
您对如何实现这一目标有任何想法吗?
内置导出数据功能的openerp不是一个选项。
答案 0 :(得分:6)
在OpenERP中将二进制文件返回到客户端的一种常用方法是使用fields.binary
列。您可以将其放在TransientModel
对象(以前为osv_memory
,用于创建交互式向导)中,该对象仅在会话期间存在。二进制字段值可以设置为先前操作的结果,也可以通过fields.function
列模拟它来即时计算。
您可以在官方插件中找到几个这样的示例,例如生成CVS / PO / TGZ文件的translation export wizard。一个缺陷是二进制值必须是base64编码的,这是出于历史RPC传输的原因。
从OpenERP 6.1开始,还可以直接从服务器文件系统下载文件。它就像将文件的URL放在fields.char
值中一样简单,作为以模块为根的相对URL,例如/module/path/to/file
。然后使用widget="url"
在表单视图中将此字段添加为链接。使用它的一种情况是邮件客户端插件的configuration wizard。
这适用于作为模块一部分的静态文件,但不适用于由于用户操作而由系统生成的文件,因为它们可能不会存储在模块的文件系统上,甚至是暂时存储的。在正确安全的安装中,OpenERP服务器进程甚至可能无权写入模块源所在的文件系统。
还有其他选项,例如编写自己的Web控制器,但上述解决方案在大多数情况下应该运行良好。