2012-05-30 122 views
1

我想通過動態填充選擇字段來自定義ploneformgen表單。我需要解析文件系統上的文件,並根據日期和時間選擇某些選項。創建python腳本並不是一件容易的事,但我在哪裏放置腳本?Ploneformgen動態填充選擇字段

  1. 從我的理解,外部方法不是在Plone 4
  2. 的首選,我試圖通過ZMI添加一個python腳本,但隨後我被限制蟒蛇擊中我的腳本將無法執行。
  3. 我開發了一個附加組件,並將其放置在egg文件夾中,然後編寫了一個python腳本來調用附加組件的代碼,但不幸的是我再次遇到與之前相同的錯誤「您沒有足夠的權限查看此頁面「。根據我的理解,附加組件中的代碼不受限制,或者?

什麼是實現窗體定製的最佳選擇?

回答

3

如果您使用了皮膚腳本,那麼是的,那也是作爲受限制的python運行的。它是ZMI python腳本的文件系統存儲的等價物。

最佳做法是使用browser view;它僅僅是具有關聯的請求和上下文調用對象:

from zope.publisher.browser import BrowserView 

class MyBrowserView(BrowserView): 
    def __call__(self): 
     request = self.request 
     context = self.context 
     # Do something with the request and context 

註冊這個在你的configure.zcml:

<browser:view 
    for="*" 
    name="mybrowserview" 
    class=".views.MyBrowserView" 
    permission="zope2.Public" 
    /> 

後,它會可作爲someobject/@@mybrowserview的PloneFormGen。

但是,如果這是您創建自定義軟件包的唯一方法,那麼請務必使用外部方法。