diff --git a/docs/extend/plugins/event.md b/docs/extend/plugins/event.md index 55f5ca2..5dbf92d 100644 --- a/docs/extend/plugins/event.md +++ b/docs/extend/plugins/event.md @@ -1,3 +1,36 @@ --- title: Event Mixin ---- \ No newline at end of file +--- + +## EventMixin + +The `EventMixin` class enables plugins to respond to certain triggered events. + +When a certain (server-side) event occurs, the background worker passes the event information to any plugins which inherit from the `EventMixin` base class. + +Implementing classes must provide a `process_event` function: + +```python +class EventPlugin(EventMixin, IntegrationPluginBase): + """ + A simple example plugin which responds to events on the InvenTree server. + + This example simply prints out the event information. + A more complex plugin could respond to specific events however it wanted. + """ + + PLUGIN_NAME = "EventPlugin" + PLUGIN_SLUG = "event" + PLUGIN_TITLE = "Triggered Events" + + def process_event(self, event, *args, **kwargs): + print(f"Processing triggered event: '{event}'") +``` + +### Events + +Events are passed through using a string identifier, e.g. 'build.completed' + +The arguments (and keyword arguments) passed to the receiving function depend entirely on the type of event. + +Implementing a response to a particular event requires a working knowledge of the InvenTree code base, especially related to that event being received.