kotti.events¶
This module includes a simple events system that allows users to subscribe to specific events, and more particularly to object events of specific object types.
See also: Events.
Inheritance Diagram¶
-
class
kotti.events.
ObjectInsert
(obj, request=None)[source]¶ This event is emitted when an object is inserted into the DB.
-
class
kotti.events.
ObjectUpdate
(obj, request=None)[source]¶ This event is emitted when an object in the DB is updated.
-
class
kotti.events.
ObjectDelete
(obj, request=None)[source]¶ This event is emitted when an object is deleted from the DB.
-
class
kotti.events.
ObjectAfterDelete
(obj, request=None)[source]¶ This event is emitted after an object has been deleted from the DB.
Deprecated since version 0.9.
-
class
kotti.events.
UserDeleted
(obj, request=None)[source]¶ This event is emitted when an user object is deleted from the DB.
-
class
kotti.events.
Dispatcher
(*a, **kw)[source]¶ Dispatches based on event type.
>>> class BaseEvent(object): pass >>> class SubEvent(BaseEvent): pass >>> class UnrelatedEvent(object): pass >>> def base_listener(event): ... print('Called base listener') >>> def sub_listener(event): ... print('Called sub listener') >>> def unrelated_listener(event): ... print('Called unrelated listener') ... return 1
>>> dispatcher = Dispatcher() >>> dispatcher[BaseEvent].append(base_listener) >>> dispatcher[SubEvent].append(sub_listener) >>> dispatcher[UnrelatedEvent].append(unrelated_listener)
>>> dispatcher(BaseEvent()) Called base listener [None] >>> dispatcher(SubEvent()) Called base listener Called sub listener [None, None] >>> dispatcher(UnrelatedEvent()) Called unrelated listener [1]
-
class
kotti.events.
ObjectEventDispatcher
(*a, **kw)[source]¶ Dispatches based on both event type and object type.
>>> class BaseObject(object): pass >>> class SubObject(BaseObject): pass >>> def base_listener(event): ... return 'base' >>> def subobj_insert_listener(event): ... return 'sub' >>> def all_listener(event): ... return 'all'
>>> dispatcher = ObjectEventDispatcher() >>> dispatcher[(ObjectEvent, BaseObject)].append(base_listener) >>> dispatcher[(ObjectInsert, SubObject)].append(subobj_insert_listener) >>> dispatcher[(ObjectEvent, None)].append(all_listener)
>>> dispatcher(ObjectEvent(BaseObject())) ['base', 'all'] >>> dispatcher(ObjectInsert(BaseObject())) ['base', 'all'] >>> dispatcher(ObjectEvent(SubObject())) ['base', 'all'] >>> dispatcher(ObjectInsert(SubObject())) ['base', 'sub', 'all']
-
kotti.events.
set_owner
(event)[source]¶ Set
owner
of the object that triggered the event.Parameters: event ( ObjectInsert
) – event that triggered this handler.
-
kotti.events.
set_creation_date
(event)[source]¶ Set
creation_date
of the object that triggered the event.Parameters: event ( ObjectInsert
) – event that triggered this handler.
-
kotti.events.
set_modification_date
(event)[source]¶ Update
modification_date
of the object that triggered the event.Parameters: event ( ObjectUpdate
) – event that triggered this handler.
Delete Tag instances / records when they are not associated with any content.
Parameters: event ( ObjectAfterDelete
) – event that triggered this handler.
-
kotti.events.
cleanup_user_groups
(event)[source]¶ Remove a deleted group from the groups of a user/group and remove all local group entries of it.
Parameters: event ( UserDeleted
) – event that triggered this handler.
-
kotti.events.
reset_content_owner
(event)[source]¶ Reset the owner of the content from the deleted owner.
Parameters: event ( UserDeleted
) – event that triggered this handler.
-
class
kotti.events.
subscribe
(evttype=<class 'object'>, objtype=None)[source]¶ Function decorator to attach the decorated function as a handler for a Kotti event. Example:
from kotti.events import ObjectInsert from kotti.events import subscribe from kotti.resources import Document @subscribe() def on_all_events(event): # this will be executed on *every* event print("Some kind of event occured") @subscribe(ObjectInsert) def on_insert(event): # this will be executed on every object insert context = event.object request = event.request print("Object insert") @subscribe(ObjectInsert, Document) def on_document_insert(event): # this will only be executed on object inserts if the object is # is an instance of Document context = event.object request = event.request print("Document insert")
-
kotti.events.
wire_sqlalchemy
()[source]¶ Connect SQLAlchemy events to their respective handler function (that fires the corresponding Kotti event).
-
kotti.events.
includeme
(config)[source]¶ Pyramid includeme hook.
Parameters: config ( pyramid.config.Configurator
) – app config