1


I'm needing some help in the following situation: I need to implement a custom event/subscriber in order to be able to get the context of an object in the beginning and in the end of it's edition, because I need to compare the status of some fields of the object in both contexts.

Is there any way to do it? Is it possible to have a handler that is live/executes during all the editing process (it's beginning and the consolidation of the changes)? Maybe using threads?

Thanks in advance for any help!

Lucas Infante
  • 798
  • 6
  • 21

1 Answers1

2

Consider overriding your edit form to get what you want instead of trying to use subscribers here -- this might look like:

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

Then register an override in ZCML or something. YMMV, I have not tried this, but I think the general idea should work.

sdupton
  • 1,869
  • 10
  • 9