2009-12-28 66 views
2

我在Plone中有一個AT內容類型。它有許多字段,包括一個文件字段。當用戶編輯這種類型的對象時,如何判斷是否上傳了新文件?如何判斷一個字段是否在plone中的一個AT對象中改變了值?

對於這個問題,我該如何判斷是否有任何字段已被更改?

我目前正在使用訂閱者掛鉤到IObjectEditedEvent做一些對象更改後 - 我可以在這裏做這些事情嗎?

回答

1

是,IObjectEditedEventIObjectModifiedEvent的直接子類)是在Archetypes內容對象正在更改時發出的。

但是,事件本身不會告訴您是否上傳了新文件。然而,應該有可能獲得請求(例如context.REQUEST應該通過獲取來提供當前請求),並查看是否存在與該字段匹配的文件對象。如果是這樣,則用戶上傳該字段的新文件並且FileField將被更新。

+0

謝謝;我使用了 request = zope.app.component.hooks.getSite()。請求 而不是上下文,然後檢查 request.has_key('FileField_file') 這似乎只在FilField已更新時纔會出現。 – askvictor 2009-12-31 00:15:40

0

這是我綁在IObjectEditedEvent:

使用從繼承ATBlob, 實施(IATBlobFile,IATFile,IFileContent)創建的默認形式

def editObjectEvent(context, event): 
    status = context.REQUEST.form.get('file_delete') 
    if status in ("nochange", NONE): 
     print "Don't do anything, no change to file." 
    else: 
     print "Do something, the file has changed" 

我想知道還有什麼其他值form['file_delete']可以有。它似乎很有用。

相關問題