Events¶
Guillotina provides an event/subscriber pattern for dispatching events out to subscribers when "things" happen in Guillotina.
Subscribing¶
Subscribing to events is done with the configure module.
All subscribers are configured with:
the object type to match subcribe to the event against
the type of event you want to subscribe to
For example, to subscribe when an object is modified:
from guillotina import configure
from guillotina.interfaces import IResource
from guillotina.interfaces import IObjectModifiedEvent
@configure.subscriber(for_=(IResource, IObjectModifiedEvent))
async def modified_object(obj, event):
pass
Creating events¶
You are also able to create your own events to notify on:
from guillotina.component.interfaces import IObjectEvent
from zope.interface import implementer
from guillotina.event import notify
class ICustomEvent(IObjectEvent):
pass
@implementer(IObjectEvent)
class CustomEvent:
def __init__(self, object):
self.object = object
await notify(CustomEvent(ob))
Events¶
guillotina.component.interfaces.IObjectEvent: every time anything happens to an object
guillotina.interfaces.IFileStartedUpload
guillotina.interfaces.IFileFinishUploaded
guillotina.interfaces.IFileBeforeFinishUploaded
guillotina.interfaces.IObjectLocationEvent: Base event for remove/rename
guillotina.interfaces.IObjectMovedEvent
guillotina.interfaces.IBeforeObjectMovedEvent
guillotina.interfaces.IObjectAddedEvent: when content added to folder
guillotina.interfaces.IObjectDuplicatedEvent
guillotina.interfaces.IBeforeObjectAddedEvent
guillotina.interfaces.IObjectRemovedEvent
guillotina.interfaces.IBeforeObjectRemovedEvent
guillotina.interfaces.IObjectModifiedEvent
guillotina.interfaces.IObjectPermissionsModifiedEvent
guillotina.interfaces.INewUserAdded