4

非常に明白なことを見落としているのではないかと心配していますが、何か提案をいただければ幸いです。PloneのPloneformgenフォームフォルダに「settings」というプレーンテキストファイルがあります。以下のコードは、フォームのフィールドの1つでオーバーライドを使用してフォームが表示されるときに呼び出されるPythonスクリプトにテキストを配置すると、このファイルのテキストを正常に変更します(たとえば、文字列フィールドのデフォルト式)。

obj = context['settings']
obj.setText('Some text:2;More text:2')
obj.reindexObject()

私の問題は、カスタムスクリプトアダプタまたはフォームの検証後スクリプトオーバーライドを使用して呼び出されたスクリプトのいずれかを使用して、「設定」のテキストを変更できるようにしたいことです。これらはどちらも機能しません(また、フィールドを検証するための個々のフィールドのオーバーライドも、これを許可していないようです)。

setText()が一部の場所で機能し、他の場所では機能しない理由はありますか(行obj = context['settings']は問題ではないようです)?私は何が欠けていますか?

私が見る限り、これは権限の問題ではなく、フォームが表示されているときに呼び出された場合に機能するコードが、フォームが送信されたときに呼び出された場合に機能しないことに少し戸惑っています。

setText()新しいテキストファイルを作成し、次の方法で呼び出されたスクリプトを使用してテキストを追加できます。問題ありません。既存のファイルを呼び出す場合の特定の問題のようです。

4

1 に答える 1

1

解決策は、呼び出し時に MIME タイプを明示的に設定することですsetText()

obj.setText("Some text", mimetype='text/plain')

また

obj.setText("Some text", mimetype='text/html')

適切に。なぜこれが機能するのかわかりませんが、機能します。

于 2012-07-10T05:50:46.150 に答える