0

私はplone/zopeアプリケーションを持っています:このアプリケーションでは、特定のデータ評価を行うためにJavaアプレットを配置します。私が知る必要があるのは、アプレットがzopeデータベースにクエリを実行できるかどうかです。

試行として、ZMIでスクリプトを作成し、POSTリクエストを介して、アプレットでそのスクリプトを呼び出します。これはEclipseフレームワークで機能しますが、これが実稼働環境で機能するかどうかはわかりません(署名されたアプレットであるため、そうだと思います)。とにかく、POSTリクエストは次のコードで実行されます。

String data = URLEncoder.encode("__ac_name", "UTF-8") + "=" + URLEncoder.encode("admin", "UTF-8");
        data += "&" + URLEncoder.encode("__ac_password", "UTF-8") + "=" + URLEncoder.encode("password", "UTF-8");
        data += "&" + URLEncoder.encode("form.submitted", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");

URL url = new URL("http://xx.xx.xx.xx:8081/myPloneWebsite/testQueryScript");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line = rd.readLine()) != null)
{
    System.out.println(line);
}
wr.close();
rd.close();

また、そのスクリプトにいくつかのパラメーターを追加したいと思います。このJavaコードで行う方法は知っていますが(ユーザー名とパスワードの構造を複製する必要があります)、Pythonでそれらを処理する方法がわかりません。パラメータはIDになります。ID=xxのオブジェクトからすべてのデータを取得します。私が作成したスクリプトは次のとおりです。これは、指定された条件ですべてのオブジェクトを循環します。

catalog = context.portal_catalog
brains = catalog(portal_type='Permesso di costruire', review_state='S9')
for b in brains:
   obj = b.getObject()
   print "%s\t%s" % (b.Title, obj.elenco_progettisti())

return printed

すべての属性を印刷およびフォーマットせずに、アプレットをZopeデータベースで読み書きできるようにする方法があればさらに良いでしょう...

4

1 に答える 1

2

アプレットクエリをzopeデータベースに取得できる場合

いいえ。簡単ではありません。多分全然。Javaアプレットを使用してzopeデータベースをクエリする理論的な方法の1つは、次のとおりです。

  • ZEOを介してデータベースをネットワークに公開します
  • JavaアプレットからZEOに接続します

しかし、そのアプローチは努力する価値がないかもしれません。

パラメータはどうquery string parametersですか?例えば:

パラメータ名をparametersフィールドに追加すると、Pythonスクリプトでクエリ文字列パラメータを処理できます。例:

ここに画像の説明を入力してください

aclark@Alexs-MacBook-Pro:~/ > curl http://localhost:8080/test\?foo=bar
This is the Script (Python) "test" in http://localhost:8080
bar
于 2012-12-17T12:00:26.510 に答える