パーソナルツール
現在の場所: ホーム zope 基本 PythonScript で標準以外のモジュールを使う
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
ナビゲーション

 
文書操作

PythonScript で標準以外のモジュールを使う

作成者 takanori 最終変更日時 2005年06月16日 11時11分

PythonScript を使うようになると、re が使いたいなぁとか思うことがありますが初期状態ではセキュリティの観点から使えないようになっています。ここではそのような標準以外のモジュールを使えるようにする設定について書きます。

zope管理画面(ZMI) から作成できる Python Script には、セキュリティの観点から利用できるモジュールが極端に制限されています。(string, math, randam とか程度)

それだけじゃ不便で使いたいモジュールが存在する場合には、このモジュールを使えるようにするという設定を zope サーバに対して行う必要があります。

モジュール追加プロダクト作成

モジュールを追加するためには、モジュールを追加するという命令を記述したプロダクトを作成する必要があります。

といってもそんなに難しいわけではなく、雛形が用意されているのでそれを利用します。

まず、zope インスタンスの Products ディレクトリに GlobalModules とかいた適当なディレクトリを作成ます。

# cd /var/lib/zope/Products
# mkdir /var/lib/zope/Products/GlobalModules

次に、/usr/lib/zope/lib/python/Products/PythonScripts/ にあるサンプル(modyle_access_examples.py)を __init__.py という名前でコピーします。

# cp /usr/lib/zope/lib/python/Products/PythonScripts/module_access_examples.py \
  __init__.py

このスクリプトを見れば使い方がわかりますが allow_moduleallow_class という関数を使って利用可能なモジュールやクラスを指定します。

私の場合は以下の部分をコメントアウトして、refnmatch を利用できるようにしました。:

    ModuleSecurityInfo('fnmatch').declarePublic('fnmatch', 'fnmatchcase')

    ModuleSecurityInfo('re').declarePublic('compile', 'findall',
      'match', 'search', 'split', 'sub', 'subn', 'error',
      'I', 'L', 'M', 'S', 'X')
    import re
    allow_type(type(re.compile('')))
    allow_type(type(re.match('x','x')))

あとは zope サーバを再起動すると、これらのモジュールが Python Script から使えるようになります。


Powered by vine linux, python, zope, plone, coreblog