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.notify(event)¶
Call self as a function.
- 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.
- kotti.events.delete_orphaned_tags(event)[source]¶
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