私は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データベースで読み書きできるようにする方法があればさらに良いでしょう...