События Plone 4 и подписчики - PullRequest
1 голос
/ 02 декабря 2011


Мне нужна помощь в следующей ситуации: мне нужно реализовать пользовательское событие / подписчик, чтобы иметь возможность получить контекст объекта в начале и вконец его издания, потому что мне нужно сравнить состояние некоторых полей объекта в обоих контекстах.

Есть ли способ сделать это?Возможно ли иметь обработчик, который работает / выполняется в течение всего процесса редактирования (его начало и консолидация изменений)?Может быть, с использованием потоков?

Заранее спасибо за любую помощь!

1 Ответ

2 голосов
/ 02 декабря 2011

Попробуйте переопределить форму редактирования, чтобы получить то, что вы хотите, вместо того, чтобы пытаться использовать подписчиков здесь - это может выглядеть так:

from plone.dexterity.browser.edit import DefaultEditForm as BaseForm

class ComparisonEditForm(BaseForm):

    def update(self, *args, **kwargs):
        existing_value = self.context.mykey
        BaseForm.update(self, *args, **kwargs)
        updated_value = self.context.mykey
        if existing_value != updated_value:
            pass # DO SOMETHING HERE

Затем зарегистрируйте переопределение в ZCML или что-то в этом роде. YMMV, я не пробовал это, но я думаю, что общая идея должна работать.

...