1

OpenERPファイルを生成するPythonメソッドがありCSVます。私の質問は、CSVのデフォルトパスをサーバー上のパスではなくローカルパスに設定するにはどうすればよいですか。

私のコードの一部にはこれがありwith open('export_data.csv', 'wb') as csvfile:ます。これにより、ファイルがサーバーに保存されます。ファイルをクライアント側の場所に保存したい。

これを達成する方法について何か考えがありますか?

openerpに組み込まれているデータのエクスポート機能はオプションではありません。

4

1 に答える 1

6

fields.binaryを使用する

OpenERPでバイナリファイルをクライアント側に返す一般的な方法の1つは、fields.binary列を使用することです。セッションの期間中のみ存続するTransientModelオブジェクト(以前は、インタラクティブウィザードの作成に使用されていました)に配置できます。バイナリフィールド値は、前の操作の結果として設定することも、列にシミュレートosv_memoryさせることでオンザフライで計算することもできます。fields.function

この例は、CVS / PO /TGZファイルを生成する翻訳エクスポートウィザードなどの公式アドオンにあります。1つの落とし穴は、過去のRPC転送の理由から、バイナリ値をbase64でエンコードする必要があることです。

静的ダウンロードURLを使用する

OpenERP 6.1以降、サーバーファイルシステムからファイルを直接ダウンロードすることもできます。fields.charモジュールをルートとする相対URLのように、ファイルのURLを値に入れるのと同じくらい簡単です/module/path/to/file。次に、を使用して、このフィールドをリンクとしてフォームビューに追加しwidget="url"ます。これが使用される1つのケースは、メールクライアントプラグインの構成ウィザードです。

これは、モジュールの一部である静的ファイルには適していますが、一時的であってもモジュールのファイルシステムに保存されるべきではないため、ユーザー操作の結果としてシステムによって生成されるファイルには適していません。適切に保護されたインストールでは、OpenERPサーバープロセスには、モジュールソースが配置されているファイルシステムに書き込む権利さえない場合があります。


独自のWebコントローラーを作成するなど、他のオプションもありますが、ほとんどの場合、上記のソリューションで十分に機能するはずです。

于 2012-10-10T13:16:03.740 に答える