I am experimenting with mongoengine. I want to audit each successful event(add/update/delete) on mongo.
For that I have created a decorator using mongoengine signal like below
from mongoengine import signals, Document, StringField
def handler(event):
def decorator(fn):
def apply(cls):
event.connect(fn, sender=cls)
return cls
fn.apply = apply
return fn
return decorator
@handler(signals.post_save)
def event_handler(sender, document, **kwargs):
"""Handle your event here"""
#do some stuff
print("Event successfully handled")
#@handler(signals.post_delete)
#def event_handler(sender, document, **kwargs):
# """Handle your event here"""
# #do some stuff
# print("Event successfully handled")
@event_handler.apply
class SampleObject(Document):
field1 = StringField()
field2 = StringField()
field3 = StringField()
field4 = StringField()
with the above code I am able to handle only save event with same name as event_handler.
I want to handle event for save, delete, update with same decorator event_handler.apply.
Is it possible? or I have to handle separately with diff name like save_event_handler.apply and handler separately for save or delete_event_handler.apply and handle separately for delete and so on?