2009-12-28 3 views
2

У меня есть тип контента AT в Plone. Он имеет несколько полей, включая поле файла. Когда пользователь редактирует объект такого типа, как я могу узнать, был ли загружен новый файл?Как узнать, изменило ли поле значение в объекте AT в plone?

В этом отношении, как я могу определить, было ли изменено какое-либо из полей?

В настоящее время я использую подписчиков, чтобы подключиться к IObjectEditedEvent, чтобы сделать некоторые после изменения объекта. Могу ли я сделать это здесь?

ответ

1

Да, IObjectEditedEvent (прямой подкласс IObjectModifiedEvent) испускается при изменении объекта содержимого архетипов.

Однако само событие не сообщит вам, был ли загружен новый файл. Однако должно быть возможным получить запрос (context.REQUEST должен предоставить вам текущий запрос посредством приобретения, например) и посмотреть, есть ли там файл-файл, соответствующий этому полю. Если это так, пользователь загрузил новый файл для этого поля, а FileField будет обновлен.

+0

Thanks; Я использовал request = zope.app.component.hooks.getSite(). ЗАПРОС вместо контекста, затем отмечен request.has_key ('FileField_file') , который появляется только в том случае, если FilField обновлен. – askvictor

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'] может иметь. Это кажется полезным.

 Смежные вопросы

  • Нет связанных вопросов^_^