1

我有一个OpenERP生成CSV文件的python方法。我的问题是如何将 CSV 的默认路径设置为本地路径,而不是服务器上的路径。

我的一部分代码有这个with open('export_data.csv', 'wb') as csvfile:。它将文件保存在服务器上。我希望将文件保存在客户端位置。

您对如何实现这一目标有任何想法吗?

openerp 内置导出数据功能不是一个选项。

4

1 回答 1

6

使用 fields.binary

在 OpenERP 中将二进制文件返回到客户端的一种常见方法是使用fields.binary列。您可以将其放入仅在会话期间存在的TransientModel对象(以前osv_memory用于创建交互式向导)中。二进制字段值可以设置为先前操作的结果,或者可以通过让fields.function列模拟它来动态计算。

您可以在官方插件中找到几个这样的示例,例如生成 CVS/PO/TGZ 文件的翻译导出向导。一个陷阱是二进制值必须是 base64 编码,出于历史 RPC 传输的原因。

使用静态下载 URL

从 OpenERP 6.1 开始,还可以提供从服务器文件系统直接下载文件的功能。就像将文件的 URL 放在一个fields.char值中一样简单,作为根植于您的模块的相对 URL,例如/module/path/to/file. 然后在表单视图中将此字段添加为链接,使用widget="url". 使用它的一种情况是邮件客户端插件的配置向导

这适用于作为模块一部分的静态文件,但不适用于系统由于用户操作而生成的文件,因为它们可能不应该存储在模块的文件系统中,即使是暂时的。在正确安全的安装中,OpenERP 服务器进程甚至可能无权写入模块源所在的文件系统。


还有其他选择,例如编写自己的 Web 控制器,但上述解决方案在大多数情况下应该足够好用。

于 2012-10-10T13:16:03.740 回答