Как я могу определить, изменило ли поле значение в объекте AT в plone?

StackOverflow https://stackoverflow.com/questions/1968343

  •  21-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top